我可以通过watir-webdriver将目录上传到远程节点吗?

时间:2016-10-26 15:45:08

标签: ruby selenium-webdriver cucumber watir-webdriver selenium-grid

我有一个黄瓜测试,通过在文件字段中输入目录路径来上传目录。当我在我的机器上运行测试时,它工作得非常好但是当我尝试在我的selenium网格设置上运行它时,我收到以下错误:

you may only upload files: "/cucumber_tests/temp/uploads/Cuke1477494492767281" (Selenium::WebDriver::Error::WebDriverError)
  (eval):1:in 'process_watir_call'

完全回溯:

/.rvm/gems/ruby-2.2.0/gems/page-object-1.1.1/lib/page-object/platforms/watir_webdriver/page_object.rb:1052:in 'instance_eval'
/.rvm/gems/ruby-2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/remote/bridge.rb:432:in 'send_keys_to_element'
/.rvm/gems/ruby-2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/common/element.rb:146:in 'send_keys'
/.rvm/gems/ruby-2.2.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/elements/element.rb:319:in 'block in send_keys'
/.rvm/gems/ruby-2.2.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/elements/element.rb:621:in 'element_call'
/.rvm/gems/ruby-2.2.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/elements/element.rb:319:in 'send_keys'
/.rvm/gems/ruby-2.2.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/elements/file_field.rb:24:in 'value='
/.rvm/gems/ruby-2.2.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/elements/file_field.rb:13:in 'set'
(eval):1:in 'process_watir_call'
/.rvm/gems/ruby-2.2.0/gems/page-object-1.1.1/lib/page-object/platforms/watir_webdriver/page_object.rb:1052:in 'instance_eval'
/.rvm/gems/ruby-2.2.0/gems/page-object-1.1.1/lib/page-object/platforms/watir_webdriver/page_object.rb:1052:in 'process_watir_call'
/.rvm/gems/ruby-2.2.0/gems/page-object-1.1.1/lib/page-object/platforms/watir_webdriver/page_object.rb:846:in 'file_field_value_set'
/.rvm/gems/ruby-2.2.0/gems/page-object-1.1.1/lib/page-object/accessors.rb:1021:in 'block in file_field'

我的代码看起来很像:

@browser.file_field(id: "assets").send_keys "/cucumber_tests/temp/uploads/Cuke1477494492767281"

同样,我想强调一下,这在我的机器上完全正常,但在远程节点上却不行。此外,我的机器和网格上的单个文件上传都可以。我想知道你是否有幸在远程节点上上传目录或知道它是否可能(即使我必须安装更多的宝石)。提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试传入文件的绝对路径:

File.expand_path("/cucumber_tests/temp/uploads/Cuke1477494492767281")

除非您尝试通过Watir将本地计算机上的内容上传到远程计算机。你不能这样做。

不,Selenium& Watir不是为上传目录而设计的。你可以遍历文件,但它们不在子目录中。

Dir["/path/to/files/*"].each do |file|
  @browser.file_field(id: "assets").set File.expand_path(file)
  @browser.form.button.click
end