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')在其他地方的模块中声明。
据我所知,我提供了上传文件的文件名的绝对路径,但是当发送tab键时,出现以下错误:
Selenium::WebDriver::Error::UnknownError: unknown error: path is not absolute:
在RubyMine中使用奇怪的squiggly symbol,这是我以前从未见过的。有什么想法吗?
更新
我添加了
puts filename_field.value
# => C:\fakepath\TestDoc
向其中一位开发人员发言,她说"浏览器是为了伪造东西而做的,所以文件系统并没有暴露出来#34;。不确定这是否有助于解决我的问题或我是SOL?
答案 0 :(得分: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)
答案 1 :(得分:0)
该错误来自Chromedriver,来自向文件元素发送错误的路径字符串。由于{{1}}不是路径,因此它正确地引发错误。
您不需要发送标签;只需发送文件的路径就可以完成你需要的工作。
答案 2 :(得分:0)
我和Chromedriver 2.26.436421有同样的问题,当我删除了发送Tab键的代码时它就解决了。
使用以前的Chromedriver发送选项卡键需要触发文件输入的更改事件,但是使用最新版本时,它似乎只会导致问题并且在没有它的情况下触发更改事件。