首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Protractor webdriver-manager永远不能启动Selenium

Protractor webdriver-manager永远不能启动Selenium
EN

Stack Overflow用户
提问于 2015-06-01 04:02:15
回答 2查看 1.3K关注 0票数 5

我设法让Protractor测试在CI服务器上通过Jenkins构建任务运行,但我遇到了这样的问题:当我运行webdriver-manager start时,Selenium服务器启动之前需要花费很长时间。

最终它启动,控制台显示:

INFO - Started SocketListener on 0.0.0.0:4444

但这有时需要大约5分钟,而当我在Vagrant VM上尝试相同的操作时,它会立即启动。

我正在运行无头量角器测试,所以我使用xvfb-run来运行webdriver-manager start

下面是我使用的shell脚本:

代码语言:javascript
复制
#!/bin/sh
export DISPLAY=:1

Xvfb $DISPLAY -ac -screen 0 1280x1024x8 &
sleep 1

xvfb-run webdriver-manager start --standalone 

这会立即在Vagrant VM上启动Selenium服务器,但在CI服务器上需要很长时间。以下是CI服务器上脚本的输出:

代码语言:javascript
复制
jenkins@vps1:~/workspace/cms$ ./runWebdriver 
Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension SECURITY
Initializing built-in extension XINERAMA
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension COMPOSITE
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension Present
Initializing built-in extension DRI3
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension SELinux
Initializing built-in extension GLX
jenkins@vps1:~/workspace/cms$ seleniumProcess.pid: 27952
21:21:21.633 INFO - Launching a standalone server
Setting system property webdriver.chrome.driver to /var/lib/jenkins/.nvm/versions/io.js/v2.0.2/lib/node_modules/protractor/selenium/chromedriver
21:21:21.760 INFO - Java: Oracle Corporation 24.79-b02
21:21:21.760 INFO - OS: Linux 3.13.0-53-generic amd64
21:21:21.810 INFO - v2.45.0, with Core v2.45.0. Built from revision 5017cb8
21:21:21.960 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}] does not match with current platform: LINUX
21:21:22.108 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
21:21:22.109 INFO - Version Jetty/5.1.x
21:21:22.111 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
21:21:22.112 INFO - Started HttpContext[/selenium-server,/selenium-server]
21:21:22.112 INFO - Started HttpContext[/,/] <-- this is where it hangs

几分钟后,它终于运行了,我可以执行Protractor测试,但这非常烦人,不适合在CI服务器上运行测试。

在Vagrant VM上,Selenium服务器立即启动,并且到目前为止输出是相同的:

代码语言:javascript
复制
19:47:08.507 INFO - Java: Oracle Corporation 24.65-b04
19:47:08.509 INFO - OS: Linux 3.13.0-44-generic amd64
19:47:08.536 INFO - v2.45.0, with Core v2.45.0. Built from revision 5017cb8
19:47:08.663 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}] does not match with current platform: LINUX
19:47:08.760 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
19:47:08.762 INFO - Version Jetty/5.1.x
19:47:08.763 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
19:47:08.764 INFO - Started HttpContext[/selenium-server,/selenium-server]
19:47:08.765 INFO - Started HttpContext[/,/]
19:47:08.800 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@14b43af3
19:47:08.801 INFO - Started HttpContext[/wd,/wd]
19:47:08.807 INFO - Started SocketListener on 0.0.0.0:4444
19:47:08.808 INFO - Started org.openqa.jetty.jetty.Server@16692a88

两台机器都运行Ubuntu 14.04,但是内核版本和Java版本略有不同(参见输出),CI服务器上的Protractor版本是2.1.0,在VM 1.8.0上是2.1.0。

这可能是问题所在,还是我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-08-18 01:09:46

这个问题似乎与Selenium使用的随机性来源有关。

更多信息请点击此处:https://code.google.com/p/selenium/issues/detail?id=1301

DR解决方案:将-Djava.security.egd=file:///dev/urandom附加到启动selenium的java命令中。您可能需要编辑webdriver-manager的配置。

票数 6
EN

Stack Overflow用户

发布于 2016-03-30 13:55:29

对于那些正在使用吞咽量角器的人。您可以在seleniumArgs属性中传递java.security.egd。

代码语言:javascript
复制
seleniumArgs: ['--proxy=http://xxx:8080', '-Djava.security.egd=file:///dev/urandom']

为了让chrome在docker上工作,我不得不在特权模式下运行。在docker compose中:

代码语言:javascript
复制
privileged: true
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30562098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档