【发布时间】:2016-01-29 21:26:01
【问题描述】:
我在本地新安装了 jenkins,我需要在 jenkins 中运行 watir webdriver 脚本,该脚本在命令提示符下成功运行。下面是简单的 watir 脚本。
require 'watir-webdriver'
b=Watir::Browser.new
b.goto "http://www.google.com"
b.text_field(:class => "gsfi").set "Avinash"
b.close
我将上面的代码保存到一个名为 test.rb 的文件中,当我在命令提示符下执行相同的代码时,它运行良好。但是,我刚刚安装了 Jenkins 并创建了一个 Freestyle 项目。我把这个 test.rb 文件放在了 jenkins 项目工作区的位置,在这个新创建的项目的配置部分,在构建部分下我添加了“执行 Windows 批处理命令”,我只是给了ruby test.rb。现在我点击了我的项目的立即构建,我希望浏览器被触发并执行我的 Watir 脚本。但是,我没有看到任何浏览器被触发并且作业失败。以下是我面临的错误
C:\Users\sony\.jenkins\jobs\test\workspace>ruby test.rb
C:/Ruby22/lib/ruby/2.2.0/net/protocol.rb:158:in `rescue in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)
from C:/Ruby22/lib/ruby/2.2.0/net/protocol.rb:152:in `rbuf_fill'
from C:/Ruby22/lib/ruby/2.2.0/net/protocol.rb:134:in `readuntil'
from C:/Ruby22/lib/ruby/2.2.0/net/protocol.rb:144:in `readline'
from C:/Ruby22/lib/ruby/2.2.0/net/http/response.rb:39:in `read_status_line'
from C:/Ruby22/lib/ruby/2.2.0/net/http/response.rb:28:in `read_new'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:1414:in `block in transport_request'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:1411:in `catch'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:1411:in `transport_request'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:1384:in `request'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:1377:in `block in request'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:853:in `start'
from C:/Ruby22/lib/ruby/2.2.0/net/http.rb:1375:in `request'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/http/default.rb:107:in `response_for'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/http/default.rb:58:in `request'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/bridge.rb:664:in `raw_execute'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/bridge.rb:642:in `execute'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/bridge.rb:133:in `get'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/common/navigation.rb:33:in `to'
from C:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:77:in `goto'
from test.rb:5:in `<main>'
C:\Users\sony\.jenkins\jobs\test\workspace>exit 1
Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
请让我知道我在这里错过了什么,以便在我在 jenkins 中点击 build now 并执行我的 watir 脚本后立即看到浏览器被触发。
【问题讨论】:
-
您可以从 Jenkings 服务器访问 www.google.com 吗? (假设它不在本地运行?)
-
@Matheus208 我希望我能做到。我可以知道如何从詹金斯服务器上确认我是否可以访问谷歌吗?
-
在您的工作部分的
build->Shell Script部分下运行$ whoami命令。现在,从命令提示符sudo su <username>切换到该用户并运行ruby.rb。如果没有运行,则将文件权限授予该用户。 -
jenkins box 上安装了哪些浏览器?此消息与浏览器对话超时。
-
@DavidAmbler 它同时安装了 firefox 和 chrome。基本上它不是一个单独的盒子。它安装在我运行 test.rb 的同一个盒子中,它工作得很好。我真的在寻找浏览器来弹出并运行我的 watir 脚本,当我点击我的 jenkins 工作的立即构建时。
标签: ruby selenium jenkins watir-webdriver