经过几天的搜索和试验我可以在网上找到的任何解决方案后,我放弃了,并希望得到社区的一些帮助。
Ruby gem(ruby 2.5.1):
watir 6.11.0
selenium-webdriver 3.4.1
泊坞窗:
selenium/node-chrome-debug:3.14
selenium/hub:3.14
我的红宝石代码:
prefs = {
download: {
prompt_for_download: false,
default_directory: download_directory
}
}
browser = Watir::Browser.new(:chrome, url: selenium_hub_url, options: {prefs: prefs})
我们的设置是:
问题是我永远无法设置默认下载目录。但是,所有其他部分都正常工作。尽管有默认的下载目录设置,VNC窗口仍显示浏览器正常工作。它总是/ home / seluser / Downloads
我尝试过的事情:
有没有人对可能导致这种情况的原因有更多的想法?我还能尝试什么?是否有我可以参考的日志。运行代码时没有错误或警告。提前致谢。
你定义了options = Selenium::WebDriver::Chrome::Options.new
吗?
我们用
options = Selenium::WebDriver::Chrome::Options.new
prefs = {
prompt_for_download: false,
default_directory: download_directory
}
options.add_preference(download: prefs)
然后你会想要类似的东西
browser = Watir::Browser.new(:chrome, url: selenium_hub_url, options: options)
但也许主要的问题只是你使用options: {prefs: prefs}
而不是options: {download: prefs}
好的,通过深入研究Watir和Selenium-Webdriver的源代码,我想我知道'根本原因'。
我创建了一个问题,因为我不确定这是一个错误还是一个'功能'The issue
另外,我在watir / capabilities.rb中有一个解决方法:
更改
@selenium_browser = browser == :remote || options[:url] ? :remote : browser
至
@selenium_browser = browser == :remote ? :remote : browser
这不应该是最终解决方案,因为它可能不是一个好主意。将等待Watir人对此的评论。
我正在使用Java + Docker + Selenium + Chrome进行自动化测试,并且遇到了类似的问题。请在下面找到我的解决方案并尝试它是否适用于您的情况。
例如docker run -d-5900:5900 --link myhub:hub -v:/ home / seluser / Downloads selenium / node-chrome-debug:3.14.0
在我的例子中,JDK环境和我的测试脚本在Linux机器上,而selenium webdriver和浏览器都在docker上,所以一旦浏览器下载的文件无法直接保存在Linux机器上,你必须默认挂载本地目录docker上的目录。然后,您可以找到保存在所需目录中的文件。感谢和问候!景