【发布时间】:2014-12-31 11:18:14
【问题描述】:
我正在使用 Selenium Webdriver,带有 Ruby 32 位 1.9.3、Chromedriver v2.9.248315、Chrome 38.0.2125.111 m 和 Jenkins 1.588 的本地实例
Gems:cucumber (1.3.17)、selenium-webdriver (2.43.0)、watir-webdriver (0.6.11)(如果您认为有必要,可以提供所有其他的列表)
Windows 7 Professional 64 位版本。
在运行 Jenkins 作业时,该作业使用 chromedriver 启动 Chrome,然后尝试与之交互,我收到超时错误。通过命令提示符窗口在我的桌面上执行相同操作时,它可以完美运行。运行相同的 Jenkins 作业,启动 Firefox 而不是 Chrome,它运行良好。
简单示例(C:\test.rb):
require 'watir-webdriver'
require 'selenium-webdriver'
client = Selenium::WebDriver::Remote::Http::Default.new
$browser = Watir::Browser.new :chrome, :http_client => client
$browser.driver.manage.window.maximize
$browser.close
Jenkins 作业配置为运行 Windows 批处理命令:
cd \
ruby test.rb
我运行作业时的输出:
Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\jobs\test chromedriver\workspace
[workspace] $ cmd /c call C:\Windows\TEMP\hudson3963234995624341455.bat
C:\Program Files (x86)\Jenkins\jobs\test chromedriver\workspace>cd \
C:\>ruby test.rb
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill': Timeout::Error (Timeout::Error)
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2563:in `read_status_line'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2552:in `read_new'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1320:in `block in transport_request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1317:in `catch'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1317:in `transport_request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1294:in `request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1287:in `block in request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:746:in `start'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1285:in `request'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/http/default.rb:83:in `response_for'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/http/default.rb:39:in `request'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/bridge.rb:638:in `raw_execute'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/bridge.rb:616:in `execute'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/bridge.rb:236:in `maximizeWindow'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/window.rb:98:in `maximize'
from test.rb:5:in `<main>'
C:\>exit 1
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
我尝试在 Jenkins 服务中启用“允许服务与桌面交互”,然后观看窗口(在更复杂的场景中)并打开 Chrome 窗口,但什么也不做。我最初遇到了“$browser.cookies.clear”的问题,在注释掉该行之后,我现在遇到了与 $browser.driver.manage.window.maximize 行相同的问题
我正在运行复杂的黄瓜场景,使用 Chromedriver 没有问题。然后我重建了我的电脑,在安装了 Jenkins、Ruby、Chromedriver(将两者都添加到 PATH)并将旧作业复制到我的新 Jenkins 安装中后,我遇到了上述问题。然后我创建了上面的简单示例,对其进行了测试并创建了这篇文章。
如果有人对我如何让 Chromedriver 再次工作有任何想法,那就太好了。
【问题讨论】:
标签: ruby google-chrome selenium jenkins selenium-chromedriver