2016-05-16 199 views
0
document_name ='TestDoc' 
document_path = ("/Users/Me/QA/Project/Documents/#{document_name}") 

File.new ("/Users/Me/QA/Project/Documents/#{document_name}") # => File is created 
filename_field.send_keys("#{document_path}") 
filename_field.send_keys :tab # => To Trigger event but where error occurs 

filename_field = browser.file_field(:name,'file')在其他地方的模块中声明。Ruby/Selenium/Watir Webdriver:绝对路径的“路径不是绝对的”错误

据我所知,我所提供的绝对路径的文件名上传的文件,但是当tab键发送,发生错误:

Selenium::WebDriver::Error::UnknownError: unknown error: path is not absolute: 

随着RubyMine的奇数squiggly symbol我从未见过。有任何想法吗?

更新:

我加

puts filename_field.value 
# => C:\fakepath\TestDoc 

说着给开发商之一,她说:“浏览器它假东西出来,所以文件系统不外露”。不知道这是否有助于解决我的问题,或者我是SOL?

+0

我很困惑。在声明它之前,您正在'filename_field' var上使用'send_keys'。 – orde

+0

对不起,这是其他地方声明,并不意味着将其包含在代码段中。将编辑! – user3468025

+0

给定'filename_field.value'的输出,假设您使用Windows是否正确? –

回答

0

该错误来自Chromedriver,并且来自发送不正确的路径字符串到文件元素。由于:tab不是路径,所以正确地引发错误。

您不应该需要发送选项卡;只是发送文件的路径应该完成你所需要的。

+0

谢谢,我在这里咆哮错误的树。 “标签”背后的想法是尝试触发事件,该事件实际上将文件上传到UI中,而不仅仅是设置file_field,并且没有像我目前正在进行的那样发生任何事情。这给了我一些继续,并解决这个问题。谢谢。 – user3468025

0

我在代码中看到很多奇怪的小东西。

为什么

document_path = ("/Users/Me/QA/Project/Documents/#{document_name}") 

document_path = "/Users/Me/QA/Project/Documents/#{document_name}" 

为什么

filename_field.send_keys("#{document_path}") 

filename_field.send_keys(document_path) 

但主要问题是为什么你使用send_keys而不是

我未能重现您的问题。也许这将是可能的,如果你会提供你的HTML。但我建议你尝试:

filename_field.set(document_path) 

因为你可以很容易地甚至IRB send_keys检查它在Firefox和Chrome浏览器例如充当不同。所以也许有问题。

另一个建议

这是一个更弱的想法。但是...

尝试在更改之前清除值。你可以使用javascript来做到这一点:

b.execute_script("arguments[0].value=''", field) 
+0

感谢您的输入。我对这个还是比较陌生的,而且自学成才,所以你的意见很有帮助!实际上,我在set和send_keys之间切换的结果相同,就像我在创建这篇文章时使用的是send_keys一样。 我尝试使用明确的字段JavaScript,并使用IRB在Firefox中进行测试。尝试设置FF中的字段时出现以下错误: 'code Errno :: ECONNREFUSED:Connection refused - connect(2)for“127.0.0.1”port 7055' – user3468025

+1

'set'只是在执行清除操作之前执行清除操作'send_keys'因此'send_keys'可能是首选的选项。 – titusfortner

0

我与Chromedriver 2.26.436421有同样的问题,它解决了当我删除发送Tab键的代码。

与以前的Chromedriver发送标签键是需要触发文件输入的更改事件,但与最新的一个,它似乎只是导致问题和更改事件触发没有它。