首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux上使用Protractor运行selenium-chromedriver

在linux上使用Protractor运行selenium-chromedriver
EN

Stack Overflow用户
提问于 2014-08-14 03:05:51
回答 2查看 14.3K关注 0票数 14

我正在使用protractor对一个Angular应用程序运行测试。它们可以在我的OSX环境下运行,但不能在TeamCity试图运行它的Linux上运行。

当我在本地OSX环境中运行此命令时,它可以工作(在我的同事机器上也进行了测试):

代码语言:javascript
复制
./node_modules/protractor/bin/protractor protractor.conf.js

Using ChromeDriver directly...
..
Finished in 5.55 seconds
2 tests, 2 assertions, 0 failures

当我在linux机器上运行它,或者一个TeamCity作业试图运行它时,它失败了:

代码语言:javascript
复制
./node_modules/protractor/bin/protractor protractor.conf.js

Using ChromeDriver directly...

/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/http/util.js:87
          Error('Timed out waiting for the WebDriver server at ' + url));
          ^
Error: Timed out waiting for the WebDriver server at http://127.0.0.1:52959/
    at Error (<anonymous>)
    at onResponse (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/http/util.js:87:11)
    at /usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/http/util.js:42:21
    at /usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/http/http.js:96:5
    at ClientRequest.<anonymous> (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:136:7)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1547:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:440:14
    at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:131:49)
    at Function.webdriver.WebDriver.createSession (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:111:30)

尝试解决:

我已经研究过this issue,但独立的webdriver服务器不是解决方案。

我看过this issue,但我的selenium-wedriver版本是2.42.1,所以,不是同一个bug。

版本:

代码语言:javascript
复制
$ node --version
v0.10.26

$ ./node_modules/protractor/bin/protractor --version
Version 1.0.0

$ uname -mrs
Linux 3.11.0-15-generic x86_64

进度更新:

试图让chrome-webdriver的版本暴露出一个问题:

代码语言:javascript
复制
$ ./node_modules/protractor/selenium/chromedriver --version
./node_modules/protractor/selenium/chromedriver: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory

由此我得出结论,这是一个依赖问题,并发现Selenium requires Chrome(more)

我使用steps like this在Linux机器上安装了Chrome

代码语言:javascript
复制
sudo apt-get install libxss1 libappindicator1 libindicator7
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb

这并不完全像那样工作,但是经过几次依赖关系和sudo apt-get install的来回转换,我想我已经安装了Chrome:

代码语言:javascript
复制
$ google-chrome --version
Google Chrome 36.0.1985.143 

这使得chromedriver版本能够工作:

代码语言:javascript
复制
$ ./node_modules/protractor/selenium/chromedriver --version
ChromeDriver 2.10.267518

但是,运行Protractor仍然不起作用:

代码语言:javascript
复制
$ ./node_modules/protractor/bin/protractor protractor.conf.js
Using ChromeDriver directly...

/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:109
  var template = new Error(this.message);
                 ^
UnknownError: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.10.267518,platform=Linux 3.11.0-15-generic x86_64)
    at new bot.Error (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:109:18)
    at Object.bot.response.checkResponse (/usr/share/TeamCity/buildAgent/work/57bd89f9c9abb5d5/webapp/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/response.js:106:9)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 03:45:09

你需要能够无头运行Chrome或Firefox,为此你需要配置Xvfb,否则在没有合适的$DISPLAY的情况下Chrome将无法启动。

你也可以使用PhantomJS,但这对e2e测试有什么好处呢,因为它不是一个真正的浏览器。

这就是我在连续测试中成功使用的:https://github.com/elgalu/docker-selenium

票数 8
EN

Stack Overflow用户

发布于 2016-08-03 17:05:49

我也遇到了同样的问题,在安装unity-gtk3-module之后问题就解决了!

yum install unity-gtk3-module

代码语言:javascript
复制
Installing:
 PackageKit-gtk3-module                                      
 Updating:                                                          
Installing for dependencies:
 PackageKit-glib                                                 
 adwaita-cursor-theme                                          
 adwaita-icon-theme                                             
 at-spi2-atk                                                   
 at-spi2-core                                                   
 cairo-gobject                                                  
 colord-libs                                                    
 gtk3                                                            
 json-glib                                                       
 libXevie                                                       
 libgusb                                                  
 rest                                                           
 Updating for dependencies:
 glib2

我希望这能帮到你

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25294183

复制
相关文章

相似问题

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