Skip to content

Use protractor to run e2e test

You Haipeng edited this page Feb 24, 2018 · 4 revisions

环境搭建

安装protractor

命令行执行:

 npm install protractor -g

npm会自动安装在:

C:\Users\你的用户名\AppData\Roaming\npm\node_modules\protractor

selenium服务

前提:selenium服务需要jdk运行环境,所以本地要先把jdk安装一下

命令行执行:

webdriver-manager update

中兴内网要加代理:

webdriver-manager --proxy http://proxy.zte.com.cn:80 update

下载完成后,可以在protractor目录下的看到selenium服务和chrome驱动:

\node_modules\webdriver-manager\selenium

然后命令行启动selenium服务:

webdriver-manager start

配置信息

在你的项目根目录下新建文件 protractor.conf.json

  • specs,要测试的e2e文件地址

  • baseUrl,访问测试网页url,后面e2e的url都会自动加上此url

  • framework,e2e测试的语言框架

  • capabilities,配置浏览器驱动

  • multiCapabilities,配多个浏览器驱动信息

  • …​…​

protractor的更多配置信息可以参考https://github.com/angular/protractor/blob/master/lib/config.ts

执行e2e测试

首先启动我们要测试的网站,保证能够访问;

然后把我们要测试的的基础网站,一般是host+port,配到`protractor.conf.json`的baseUrl中;

最后在项目的根目录下的命令行执行:

protractor

如果没错的话,接下来会弹出测试浏览器框,里面可以看到自动化测试了。

Jasmine语法

我们的e2e测试用例采用的是jasmine框架;

Protractor API

有外网条件的同学可以访问http://www.protractortest.org/#/api

常见问题

执行protractor时,报找不到update-config.json这个文件

这主要由于本地的网络环境不稳定引起的,此时你可以再执行一次 webdriver-manager update,如果运气好的话,你可以下到update-config.json文件。如果你下不到,就按照下面的操作来吧:

step-1:打开

C:\Users\你的用户名\AppData\Roaming\npm\node_modules\protractor\node_modules\webdriver-manager\selenium

step-2:新建update-config.json文件,把下面的内容粘贴进去

{
    "chrome": {
        "last": "C:\\Users\\你的用户名\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\webdriver-manager\\selenium\\chromedriver_2.33.exe",
        "all": [
            "C:\\Users\\你的用户名\\AppData\\Roaming\\npm\\node_modules\\protractor\\node_modules\\webdriver-manager\\selenium\\chromedriver_2.33.exe"
        ]
    }
}

注意修改你的用户名和chromedriver的版本

webdriver-manager start的时候报错

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo EAI_AGAIN chromedriver.storage.googleapis.com:443
    at Object._errnoException (util.js:1022:11)
    at errnoException (dns.js:55:15)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo EAI_AGAIN selenium-release.storage.googleapis.com:443
    at Object._errnoException (util.js:1022:11)
    at errnoException (dns.js:55:15)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)

解决方法:在浏览器打开对应的url,把xml拷贝到本地;

另一个解决办法:不用执行webdriver-manager start,直接执行protractor,protractor会判断是否有webdriver server,没有时,protractor会自动帮我们启动。