整个项目的文件结构,如下图所示,
先说 最基本需要写的。
再说比较复杂的。
公司中的测试用例,主要用到的技术有下面几种,以及 对应的 文档API 链接。
Selenium Webdriver http://www.seleniumhq.org/docs/03_webdriver.jsp
Cucumber js https://cucumber.io/docs/reference/javascript
Promises https://www.promisejs.org/
char : http://chaijs.com/api/
×××××××××××××××××××××××最基本的××××××××××××××××××××××××××××××××××××
最基本,需要写的,只有 3个文件, 都在 features 文件夹下。
1、 abc.feature
2、logintest.step.js
3、logintest.page.js
abc.feature
第一个文件,就是测试用例文件。
里面包含 很多 类似单元测试的方法。
语法简单,
Feature: LawEditorial
LawEditorial Login AutoTest..
Background: # background,是执行所有测试用例 的前提条件。
Given visit the login page and login # 这个就是方法名。 可以声明多个方法。
#下面就是一个测试用例。 每个 <span style="font-family: Arial, Helvetica, sans-serif;">Scenario ,都是一个测试单元。</span>
@first #这个是,标签,需要在 gruntfire.js 里面声明, 作用就是,指定 某个条件下,运行这个测试用例,以后详细说明。
Scenario: Test The ideal of the topic #方法描述。
Given open the page #下面都是一些方法。。
When start the project
#Then view tasks
Then exit program
# cucmber 有自己的语法, 所有的方法前,都有一个 前缀 Given When Then ,等等,这些可以看cucumber ,
默认条件,登录系统
首先,打开 选题立项页面,
然后,填写选题立项信息,
然后,启动流程
然后,到所有任务中,找到选题立项,办理需要 办理的流程。
***
最后,退出系统。
logintest.step.js
这个文件,是对 abc.feature 文件中,声明的方法进行 实现。
代码太多,只复制一部分。
'use strict';
var expect = require('chai').expect;
var homePage = require('../page_objects/logintest.page.js'); //node js 用法,引入 类库
var xtlxPage = require('../page_objects/project.page.js');
var projectName;
module.exports = function() {
this.World = require('../support/world.js').World; <span style="font-family: Arial, Helvetica, sans-serif;">//node js 用法,引入 类库</span>
<span style="font-family:Arial, Helvetica, sans-serif;">
</span><span style="white-space:pre"> </span>//在 feature 文件中, Given ,对应 this.Given ,方法名称需要一致。
this.Given(/^visit the login page and login$/, function(callback) {
<span style="white-space:pre"> </span>//调用 logintest.page.js 中的固定元素,
homePage.load(this);
homePage.pageTitle(this).then(function(title) {
expect(title).to.equal('登录');
});
homePage.waitForUnserName(this);
this.drive.sleep(500);
homePage.pageTitle(this).then(function(title) {
expect(title).to.equal('后台管理');
});
callback();
});
this.Given(/^open the page$/, function(callback) { //
xtlxPage.xtlxglMenu(this).click();
//下面,是切换 视图监控。 以后详细描述。
//咱们 项目中,,是在webgate 的 index.jsp 页面中,嵌套 iframe 窗体,因此,当需要 响应 窗体内部元素 的事件,需要切换视图。
var frame = this.drive.findElement({ xpath : '//*[@id="frameTabs"]/div[2]/div[2]/div/iframe' });
//*[@id="frameTabs"]/div[2]/div[2]/div/iframe
this.drive.switchTo().frame(frame);
callback();
});
this.When(/^start the project$/, function(callback) {
xtlxPage.waitxtlxPage(this);
//填写基本信息
projectName = 'asdf'+Math.random();
xtlxPage.xmmcInput(this).sendKeys(projectName);//项目名称
xtlxPage.startup(this).click();
//切换视图回到默认
this.drive.switchTo().defaultContent();
callback();
});
this.Then(/^exit program$/, function(callback) {
homePage.logoutMenu(this).click();
homePage.pageTitle(this).then(function(title) {
expect(title).to.equal('登录');
});
callback();
});
};
logintest.page.js
这个文件,是对 在logintest.step.js 中,经常使用的元素,进行提取,
包括,元素,方法,和,事件,等等。
好处是,如果页面发生变动,只改这个文件里面就可以了,不用去改 业务逻辑 文件。
只复制部分代码
'use strict';
module.exports = {
// 根据,ID,CSS ,XPATH 的方式,获取元素。
//焦点 iframe
iframe : function(my) {//选题立项 子菜单
return my.drive.findElement({ xpath : '//*[@id="frameTabs"]/div[2]/div[2]/div/iframe' });
},
//选题立项管理
xtlxglMenu : function(my) {//选题立项菜单
return my.drive.findElement({ xpath : '//*[@id="menuList"]/li[3]/a' });
},
xtlxMenu : function(my) {//选题立项 子菜单
return my.drive.findElement({ xpath : '//*[@id="menuList"]/li[3]/ul/li[1]/a' });
},
// **********************************************************************
/*
* Actions
*/
//响应的事件。 对应的方法, 都在 support 文件夹 下 的 world.js 文件中。
waitForcplxInput : function(my) {
return my.waitForXpath('//*[@id="page-content"]/div', '选题立项 iframe');
},
waitForcpAuto : function(my) {
return my.waitForXpath('//*[@id="treeDemo_1"]', '产品类型自动补全');
},
};
××××××分割线×××××
上面的代码中,my.waitForXpath,在 support 文件夹下 的world.js 文件中, 下一篇博客解释。
my.drive.findElement 方法,是用的 selenium webdriver selenium.js 的用法,下一篇博客解释。详细可以去看API
***.then(function (){ 这个方法 ,是用 Promises ,详细用法,下一篇博客解释,或者看API })
*******************************基本end**************************************************
下一篇博客,解释 一般不需要配置的文件。
support 文件夹下的
Gruntfile.js
package.json
pom.xml
文件
*********************************************************************
分享到:
相关推荐
使用IDEA开发工具 使用JAVA语言编写
这个“phantomjs自动化测试demo”是一个实例,展示了如何使用PhantomJS进行自动化测试。 首先,我们需要理解“无头浏览器”的概念。无头浏览器意味着它在后台运行,没有用户界面,但可以加载和执行网页代码,非常...
【标题】"selenium+JAVA+chrome自动化测试demo"揭示了这个项目是关于使用Selenium WebDriver结合Java语言来实现Chrome浏览器的自动化测试。Selenium是一个强大的开源自动化测试框架,允许开发者编写可运行在多种...
综上所述,这个"python+selenium+unittest自动化测试demo"提供了一个全面的测试解决方案,涵盖了从编写测试用例、执行测试、生成报告到通知结果的全过程。它对于学习自动化测试和提升测试效率具有很高的参考价值。
在IT行业中,自动化测试是软件开发过程中的重要环节,它能显著提高测试效率,减少人工错误,确保产品质量。本文将详细解析一个以C语言为基础的简易自动化测试框架,旨在帮助开发者理解和构建自己的测试解决方案。 ...
配置CANoe自动化测试的五种实现方式Demo工程(CANoe 15) 近期在做的一个自动化测试项目,尝试了一种以前没用过的测试配置方式,感觉效果还不错。然后又回顾了一下以前用过的其他几种方式,利用周末时间总结分享出来...
【去哪儿网自动化测试demo源码下载】是一个针对去哪儿网(Qunar)的自动化测试实践案例,主要用于展示如何通过编程方式对网站功能进行自动化测试。在这个项目中,我们可以深入理解自动化测试的基本原理,以及如何将...
本示例“java版本的自动化测试demo”聚焦于利用Java语言进行Web应用的自动化测试,主要涉及Selenium WebDriver工具,这是一个广泛使用的浏览器自动化框架。 Selenium WebDriver,简称WebDriver,是一个开源的API,...
本教程将重点介绍如何使用C++脚本在PreScan中进行自动化测试,以便提高测试效率和准确性。 首先,了解PreScan的基本概念是必要的。PreScan是一个基于物理模型的高精度仿真工具,它可以创建真实世界的环境,包括地形...
压缩包中的`pytestDemo`可能包含了上述各种功能的示例代码,你可以通过运行`pytest pytestDemo`来执行这些测试,查看它们如何工作并学习如何利用pytest进行自动化测试。同时,通过阅读源码,可以深入了解pytest的...
通过这个"robotframework自动化测试demo实例",你可以了解到如何设置测试环境,编写测试用例,以及如何运行和分析测试结果。实践这些示例将帮助你更好地掌握Robot Framework,并能将其应用到实际的项目中,实现高效...
Java自动化测试框架是软件开发过程中不可或缺的一部分,它能够帮助开发者高效、准确地验证代码功能,提高软件质量。本文将深入探讨Java自动化测试框架的核心概念、常用工具以及如何构建一个基本的自动化测试流程。 ...
这个“Java+appium+Android模拟器自动化demo”旨在教你如何在Android Studio环境下设置一个完整的自动化测试框架,以便对Android应用程序进行功能测试。 首先,确保你已经安装了Java JDK 1.7或1.8。Java是编写自动...
在Android平台上,自动化测试是开发过程中不可或缺的一部分,它能够有效地提高效率,确保代码的质量和应用的稳定性。其中,AccessibilityService是一种强大的工具,它允许开发者创建服务来帮助有特殊需求的用户,...
基于http接口的自动化测试框架代码,使用testng框架,支持环境切换(IDE上选择Maven的profiles编译执行),或命令行执行如“mvn clean test -Ppre Dtest=DemoTest”,-P指定执行环境。测试报告使用了allure更直观
1. 测试脚本:使用特定编程语言编写的自动化测试代码,这些代码会模拟用户与应用的交互。 2. 数据文件:包含用于测试的不同输入数据,这些数据会被引入到测试脚本中以执行各种测试场景。 3. 配置文件:定义了测试...
8. **持续集成与持续测试**:将接口自动化测试集成到CI/CD流程中,如Jenkins或GitLab CI,每次代码提交后自动运行测试,确保质量。 9. **测试报告**:生成详尽的测试报告,如extentreports,它提供了丰富的样式和...
11. **自动化测试**:自动化测试使用脚本或工具自动执行测试,减少人工错误并提高效率。Selenium用于Web应用测试,Appium则用于移动应用。 12. **代码审查**:代码审查是检查测试代码质量的有效方法,通过同行评审...
在提供的压缩包文件`wxapp-appium-master`中,可能包含了示例代码、配置文件以及辅助工具,帮助读者更好地理解和实践这个微信小程序自动化测试方案。通过研究这些资源,可以进一步学习如何结合Appium和pytest实现...
2、前端:请求后端接口,实现跟测试人员交互,测试环境录入、接口录入、用例录入、扩展脚本录入、制定执行计划、计划组,观看测试报告、收集每周 月 年自动化执行情况与节省人工等。 代码目录:platview;使用 vue-...