Angular + protractor + mocha
来源:互联网 发布:c语言平方根号怎么表示 编辑:程序博客网 时间:2024/06/08 17:24
前段时间在做E2E测试,项目用的框架是angular,所以就用了官方推荐的protractor。
学习protractor
查看官方文档
全局安装protractor
官方文档上有具体的步骤。
我在安装过程中碰到了如下的问题:
(1) webdriver-manager update 时提示错误 “webdriver-manager: command not found”
解决办法:./node_modules/protractor/bin/webdriver-manager(protractor全局安装的路径) update
(2) webdriver-manager start “Unsupported major.minor version 52.0”
解决办法:升级jdk1.7 到 jdk1.8
protractor.conf.js
常用参数解释
(1) framework: 测试框架jasmine、mocha等
(2) specs: 默认执行的测试
specs: ['e2e/test/*.js']
protractor protractor.conf.js 命令会执行这个配置下的测试
(3) suites: 配置每一个用例单独执行
suites: { login: 'e2e/test/login_fuction_spec.js'}
protractor protractor.conf.js –suite login 命令会执行login_fuction_spec的测试
(4) directConnect: true/false,true表示直接使用浏览器
(5) capabilities:
capabilities: { browserName: 'chrome', chromeOptions: { args: ['no-sandbox'] }}
browserName:directConnect为true时,使用的浏览器。
(6) mochaOpts: framework是mocha时的参数配置,可以设置超时时间。
mochaOpts: { reporter: 'spec', timeout: 60000}
(7)完整的protractor.conf.js
exports.config = { framework: 'mocha', seleniumAddress: 'http://localhost:4444/wd/hub', specs: ['e2e/test/*.js'], suites: { login: 'e2e/test/login_fuction_spec.js' }, directConnect: true, capabilities: { browserName: 'chrome', chromeOptions: { args: ['no-sandbox'] } }, mochaOpts: { reporter: 'spec', timeout: 60000 }};
断言库
使用chai + chai-as-promised
(1) npm install chai
(2) npm install chai-as-promised
(3) 因为protractor API 返回结果都是promise对象,要直接对结果进行断言,就要用到chai-as-promised。
let cls = element(by.css('.cls'));expect(cls.isPresent()).to.eventually.equal(false);
一般情况
expect(true).to.equal(true);
遇到的问题
(1) window.angular is not defined
describe('BDS login', () => { protractor.browser.get('http://xxx.com'); it('visible', () => { let modal = element(by.id('xxx')); expect(modal.isDisplayed()).to.eventually .equal(true); });}
window.angular is not defined.
这是因为测试先于页面加载执行了。
解决办法,先保证页面加载完成
describe('BDS login', () => { before('get page before do test', function () { protractor.browser.get('http://xxx.com'); }); it('visible', () => { let modal = element(by.id('xxx')); expect(modal.isDisplayed()).to.eventually .equal(true); });}
before/beforeEach
before: 最早执行。在其中可以完成测试的所有前置条件,包括页面加载啊,登录啊。
import { browser, element, by } from 'protractor';let chai = require('chai');let chaiAsPromised = require('chai-as-promised');chai.use(chaiAsPromised);let expect = chai.expect;let login = require('./doLogin');describe('Create Project', () => { before('before do test', function () { login.loginsuccess(); });}
beforeEach: 每个用例之前都要执行一次。
- Angular + protractor + mocha
- Protractor
- 初步了解Angular 2端到端的测试 Introduction to E2E Testing with the Angular CLI and Protractor
- Protractor小结
- 初识mocha
- Mocha实践
- mocha helloworld
- mocha测试
- mocha教程
- mocha安装
- 学习Mocha
- mocha + chai
- protractor 环境搭建
- protractor设置cookie登录
- protractor 添加测试报告
- Protractor版本大事记
- Protractor 环境搭建
- protractor元素无法点击
- 第二十六篇 jQuery 学习8 遍历-父亲兄弟子孙元素
- Bayer Sensor OV13850
- Kotlin进阶之集合与区间
- LeetCode-Reverse Integer
- Javascript字符串模板简单实现(一)
- Angular + protractor + mocha
- Median of Two Sorted Arrays
- LintCode--first unique number in stream
- HighGUI的初步认识
- 【ssm框架】配置log4j日志
- @Repository、@Service、@Controller 和 @Component
- scrapy爬取豆瓣top250电影
- css优先级及css字体和table的部分属性
- Hibernate