ruby - 无法使用 selenium hub docker 和 ruby​​ watir 更改 chrome 的默认下载目录

标签 ruby selenium docker watir

经过几天的搜索和试验,我可以在网上找到任何解决方案,我放弃了,想从社区获得一些帮助。

ruby gem ( ruby 2.5.1):

watir 6.11.0
selenium-webdriver 3.4.1

docker :
selenium/node-chrome-debug:3.14
selenium/hub:3.14

我的 ruby 代码:
prefs = {
    download: {
        prompt_for_download: false,
        default_directory: download_directory
    }
}
browser = Watir::Browser.new(:chrome, url: selenium_hub_url, options: {prefs: prefs})

我们的设置是:
  • 运行 selenium/hub 和 selenium/node-chrome-debug。可能不同的是,我们将基本操作系统的/tmp 作为/hosttmp/tmp 安装在节点容器
  • 中。
  • 让 selenium/node-chrome-debug 与 selenium/hub
  • 对话
  • 使用上面提供的代码
  • 使浏览器自动化与 selenium/hub 对话

    问题是我永远无法设置默认下载目录。但是,所有其他部分都正常工作。尽管默认下载目录设置,VNC 窗口显示浏览器工作正常。它总是/home/seluser/Downloads

    我尝试过的事情:
  • 其他人的想法如不同的方式来指定选项和偏好。 (例如使用功能)
  • Docker 安全相关设置,例如:--privileged --security-opt apparmor:unconfined --cap-add SYS_ADMIN
  • 在基本操作系统上,chmod 777 用于 download_directory。 download_directory,例如base OS上的/tmp/tmp.123,在chrome节点容器中挂载为/hosttmp/tmp/tmp.123,我可以看到它并在这个文件夹中进行一些读/写操作在容器内或基础操作系统上
  • 在创建 Hash 对象时调整有趣的 ruby 符号/字符串的东西。

  • 有没有人对可能导致这种情况的原因有更多的想法?我还能尝试什么?有没有我可以引用的日志。运行代码时没有错误或警告。提前致谢。

    最佳答案

    你定义了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}

    关于ruby - 无法使用 selenium hub docker 和 ruby​​ watir 更改 chrome 的默认下载目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075365/

    相关文章:

    ruby - 生成具有加权概率的随机数 - 'Distribution' gem

    ruby-on-rails - SQLite3::ConstraintException:唯一约束失败:users.email:INSERT INTO "users"

    c# - 用于文件下载的自定义浏览器首选项

    应用程序中的 Android Web 自动化

    java - Maven 安装文件在 GitLab/Docker : "could not resolve dependencies for project" 中无效

    ruby-on-rails - Ruby on Rails 嵌套模型未使用 form_for 更新,但更新时没有错误

    ruby - 在 Ruby 驱动程序上使用 upsert 和 push to an array 选项

    c# - 在 C# 中使用 Selenium Web 驱动程序,FirefoxWebDriver Navagate().GoTo(URL) 失败

    docker - 在K8S中部署一个NFS Server并对外暴露

    docker - 如何在 docker 容器上设置 ulimit/文件描述符 图像标签是 phusion/baseimage-docker