我正在使用 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 专业版 64 位版本。
当运行使用 chromedriver 启动 Chrome 的 Jenkins 作业,然后尝试与其交互时,出现超时错误。当通过命令提示符窗口在我的桌面上执行相同操作时,它工作得很好。运行相同的 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
配置为运行 Windows Batch 命令的 Jenkins 作业:
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 再次工作有任何想法,那就太好了。