【问题标题】:Watir Chrome Headless DockerWatir Chrome 无头 Docker
【发布时间】:2017-12-21 16:37:54
【问题描述】:

我正在尝试通过在 Docker 上与我的测试套件一起运行 headless 来简化我的 Selenium 测试。我正在运行一个 Debian Jessie 映像,其中安装了从 PPA 安装的 google-chrome-stable 并安装了 chromedriver 2.33。我还附加了 /dev/shm 以最大化容器中的内存。我已经验证 chromedriver 在容器内运行良好。但是,当我运行一个简单的测试时,我得到了超时:

browser = Watir::Browser.new :chrome, headless: true
browser.goto 'google.com'
browser.text_field(title: 'Search').set 'Hello World!'
browser.button(type: 'submit').click
puts browser.title
browser.quit

/usr/local/lib/ruby/2.4.0/net/protocol.rb:176:in `rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)
    from /usr/local/lib/ruby/2.4.0/net/protocol.rb:154:in `readuntil'
    from /usr/local/lib/ruby/2.4.0/net/protocol.rb:164:in `readline'
    from /usr/local/lib/ruby/2.4.0/net/http/response.rb:40:in 
......

值得一提的是chromedriver安装在/chromedriver/chromedriver,然后添加到$PATH。 Watir/Selenium 是否需要知道 chromedriver 的完整路径? chromedriver或chrome是否需要在后台运行?

【问题讨论】:

  • 如果您进一步查看该错误消息,您最终应该会找到对代码行的引用,这将有助于了解该行的内容
  • 这里没有惊喜......代码已包含在内。
  • 您已经包含了一些代码,是的,但是您没有指出代码的哪一行导致了错误。您包含的错误转储部分只有 4 行,它们都是核心 ruby​​ 网络代码。这并没有告诉我们您的代码的哪一行在执行时导致了该错误。

标签: ruby google-chrome selenium docker watir


【解决方案1】:

这是因为一个小的 shm(共享内存)。这个githublink会解决你的烦恼。如果您对 shm 是什么感到好奇,请参阅 this nice guide。

使用此命令可以进行快速测试。

docker exec containerID umount /dev/shm
docker exec containerID mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多