简体   繁体   English

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

[英]Can I upload a directory to a remote node via watir-webdriver?

I have a cucumber test that uploads a directory by entering the directory path into the file field. 我有一个黄瓜测试,通过在文件字段中输入目录路径来上传目录。 It works perfectly fine when I run the test on my machine but I'm getting the following error when I try to run it against my selenium grid setup: 当我在我的机器上运行测试时,它工作得非常好但是当我尝试在我的selenium网格设置上运行它时,我收到以下错误:

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

Full backtrace: 完全回溯:

/.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'

My code pretty much looks like this: 我的代码看起来像这样:

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

Again, I'd like to emphasize that this works perfectly fine on my machine but not on the remote node. 同样,我想强调一点,这在我的机器上完全正常,但在远程节点上却不行。 Also, single file uploads are fine for me on both my machine and on the grid. 此外,我的机器和网格上的单个文件上传都可以。 I'm wondering if any of you have had luck uploading directories on remote nodes or know if it's even possible (even if I have to install more gems). 我想知道你是否有幸在远程节点上上传目录或知道它是否可能(即使我必须安装更多的宝石)。 Thanks in advance! 提前致谢!

Try passing in the absolute path to the file: 尝试传入文件的绝对路径:

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

Unless you are trying to upload something from your local computer to a remote computer via Watir. 除非您尝试通过Watir将本地计算机上的内容上传到远程计算机。 That you can't do. 你不能这样做。

No, Selenium & Watir are not designed to upload directories. 不,Selenium和Watir不是为上传目录而设计的。 You could loop through files, but they wouldn't be in a subdirectory. 您可以遍历文件,但它们不在子目录中。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM