我是Cloud9的新手,我正在尝试使用Protractor进行e2e测试。我正在运行angular-phonecat示例。
错误如下:
Using ChromeDriver directly...
/home/ubuntu/workspace/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:109
var template = new Error(this.message);
^
UnknownError: chrome not reachable
(Driver info: chromedriver=2.10.267518,platform=Linux 3.14.13-c9 x86_64)
at new bot.Error (/home/ubuntu/workspace/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:109:18)
..
我安装了chromedriver。唯一的问题是如何在cloud9上安装实际的Chrome并运行测试?
提前谢谢你,
欢呼声, Haytham
答案 0 :(得分:11)
我是webase IDE的粉丝,Cloud9是最好的之一。这是一种安装Xvfb,chrome和Protractor以便在Cloud9上进行AngularJS端到端自动化测试的方法
打开终端(已在c9.io上安装xvfb)
安装X11字体
$ sudo apt-get install -y xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic
安装上一个chrome
$ wget -q -O - \
https://dl-ssl.google.com/linux/linux_signing_key.pub \
| sudo apt-key add -
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" \
>> /etc/apt/sources.list.d/google-chrome.list'
$ sudo apt-get update
$ sudo apt-get install -y google-chrome-stable
安装量角器
$ npm install -g protractor
更新webdriver
$ webdriver-manager update
使用带chrome的-no-sandbox选项
由于c9.io在容器内运行,因此需要此选项 更新量角器 conf.js 以将选项传递给chrome
capabilities: {
browserName: 'chrome',
'chromeOptions': {
args: ['--no-sandbox']
}
}
在无头铬上运行量角器测试
用xvfb启动webdriver(无头)
$ xvfb-run webdriver-manager start
在其他终端上运行测试
$ protrator conf.js
答案 1 :(得分:0)
无法安装'浏览器到cloud9上运行基于浏览器的端到端测试场景。 selenium web驱动程序正在寻找加载chrome来运行测试,但由于它不是可以在cloud9开发环境中找到的东西而引发错误。
如果您致力于在像cloud9这样的在线IDE上运行这些测试,那么您唯一的选择是使用像phantomJS这样的无头浏览器,但需要注意量角器文档的注意事项
我们建议不要使用PhantomJS进行Protractor测试。有许多报道的问题与PhantomJS崩溃并且与真实浏览器的行为不同。
我建议您在本地下载您的应用,并在浏览器中运行广泛的E2E测试,您的用户将使用这些测试来访问您的应用。
另一种选择是使用Saucelabs(https://saucelabs.com/)之类的东西进行基于云的自动跨浏览器测试;这将需要protractor_conf.js
文件中的一些配置。请注意,基于云的测试可能会产生额外的成本。
答案 2 :(得分:0)
我刚测试了这个,它在我的chromebook上为我工作。它包含完成https://docs.angularjs.org/tutorial第一页所需的所有步骤,包括设置量角器测试。
create new blank workspace
run these commands
rm -rf * .c9
git clone --depth=16 https://github.com/angular/angular-phonecat.git
cd angular-phonecat
nvm install 7
nvm alias default node
npm install minimatch
sudo npm install npm -g
edit this file
angular-phonecat/package.json
"start": "http-server ./app -a $IP -p $PORT -c-1"
run these commands
npm start
click 'Share'
browse to url next to 'Application'
yay! the phonecat webapp should be running!
karma
add these lines to karma.conf.js
hostname: process.env.IP,
port: process.env.PORT
edit package.json
"test": "karma start karma.conf.js --no-browsers"
run this command
npm test
browse to http://<projectName>.<cloud9User>.c9.io:8081
go forth and test!
protractor
run these commands
sudo apt-get update
sudo apt-get install -y xvfb
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update
sudo apt-get install -y google-chrome-stable
edit protractor.conf.js
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
args: ['--no-sandbox']
}
}
run these commands
npm install -g protractor
sudo webdriver-manager update
xvfb-run webdriver-manager start
edit protractor.conf.js
baseUrl: 'http://' + process.env.IP + ':' + process.env.PORT + '/'
seleniumAddress: 'http://127.0.0.1:4444/wd/hub'
run these commands
protractor protractor.conf.js