如何在使用Cloud9时使Protractor工作?

时间:2014-12-09 02:51:50

标签: angularjs cloud protractor

我是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

3 个答案:

答案 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
    

来自http://blog.maduma.com

答案 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