`
我是温浩然
  • 浏览: 104810 次
文章分类
社区版块
存档分类
最新评论

公司自动化测试,demo代码分析

 
阅读更多

整个项目的文件结构,如下图所示,

先说 最基本需要写的。

再说比较复杂的。


公司中的测试用例,主要用到的技术有下面几种,以及 对应的 文档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

文件

*********************************************************************


分享到:
评论

相关推荐

    简单的接口自动化测试Demo

    使用IDEA开发工具 使用JAVA语言编写

    phantomjs自动化测试demo

    这个“phantomjs自动化测试demo”是一个实例,展示了如何使用PhantomJS进行自动化测试。 首先,我们需要理解“无头浏览器”的概念。无头浏览器意味着它在后台运行,没有用户界面,但可以加载和执行网页代码,非常...

    selenium+JAVA+chrome自动化测试demo

    【标题】"selenium+JAVA+chrome自动化测试demo"揭示了这个项目是关于使用Selenium WebDriver结合Java语言来实现Chrome浏览器的自动化测试。Selenium是一个强大的开源自动化测试框架,允许开发者编写可运行在多种...

    python+selenium+unittest自动化测试demo

    综上所述,这个"python+selenium+unittest自动化测试demo"提供了一个全面的测试解决方案,涵盖了从编写测试用例、执行测试、生成报告到通知结果的全过程。它对于学习自动化测试和提升测试效率具有很高的参考价值。

    C简易自动化测试框架

    在IT行业中,自动化测试是软件开发过程中的重要环节,它能显著提高测试效率,减少人工错误,确保产品质量。本文将详细解析一个以C语言为基础的简易自动化测试框架,旨在帮助开发者理解和构建自己的测试解决方案。 ...

    配置CANoe自动化测试的五种实现方式Demo工程(CANoe 15)

    配置CANoe自动化测试的五种实现方式Demo工程(CANoe 15) 近期在做的一个自动化测试项目,尝试了一种以前没用过的测试配置方式,感觉效果还不错。然后又回顾了一下以前用过的其他几种方式,利用周末时间总结分享出来...

    去哪儿网自动化测试demo源码下载

    【去哪儿网自动化测试demo源码下载】是一个针对去哪儿网(Qunar)的自动化测试实践案例,主要用于展示如何通过编程方式对网站功能进行自动化测试。在这个项目中,我们可以深入理解自动化测试的基本原理,以及如何将...

    java版本的自动化测试demo

    本示例“java版本的自动化测试demo”聚焦于利用Java语言进行Web应用的自动化测试,主要涉及Selenium WebDriver工具,这是一个广泛使用的浏览器自动化框架。 Selenium WebDriver,简称WebDriver,是一个开源的API,...

    自动驾驶仿真软件PreScan使用c++脚本自动化测试教程,该教程里面包含模块测试demo,和模块调用教程。

    本教程将重点介绍如何使用C++脚本在PreScan中进行自动化测试,以便提高测试效率和准确性。 首先,了解PreScan的基本概念是必要的。PreScan是一个基于物理模型的高精度仿真工具,它可以创建真实世界的环境,包括地形...

    pytest自动化测试框架源码02

    压缩包中的`pytestDemo`可能包含了上述各种功能的示例代码,你可以通过运行`pytest pytestDemo`来执行这些测试,查看它们如何工作并学习如何利用pytest进行自动化测试。同时,通过阅读源码,可以深入了解pytest的...

    robotframework自动化测试demo实例

    通过这个"robotframework自动化测试demo实例",你可以了解到如何设置测试环境,编写测试用例,以及如何运行和分析测试结果。实践这些示例将帮助你更好地掌握Robot Framework,并能将其应用到实际的项目中,实现高效...

    java自动化测试框架

    Java自动化测试框架是软件开发过程中不可或缺的一部分,它能够帮助开发者高效、准确地验证代码功能,提高软件质量。本文将深入探讨Java自动化测试框架的核心概念、常用工具以及如何构建一个基本的自动化测试流程。 ...

    Java+appium+Android模拟器自动化demo

    这个“Java+appium+Android模拟器自动化demo”旨在教你如何在Android Studio环境下设置一个完整的自动化测试框架,以便对Android应用程序进行功能测试。 首先,确保你已经安装了Java JDK 1.7或1.8。Java是编写自动...

    使用Android辅助功能AccessibilityService 进行自动化测试demo 源码

    在Android平台上,自动化测试是开发过程中不可或缺的一部分,它能够有效地提高效率,确保代码的质量和应用的稳定性。其中,AccessibilityService是一种强大的工具,它允许开发者创建服务来帮助有特殊需求的用户,...

    接口自动化工程demo代码

    基于http接口的自动化测试框架代码,使用testng框架,支持环境切换(IDE上选择Maven的profiles编译执行),或命令行执行如“mvn clean test -Ppre Dtest=DemoTest”,-P指定执行环境。测试报告使用了allure更直观

    UI自动化demo

    1. 测试脚本:使用特定编程语言编写的自动化测试代码,这些代码会模拟用户与应用的交互。 2. 数据文件:包含用于测试的不同输入数据,这些数据会被引入到测试脚本中以执行各种测试场景。 3. 配置文件:定义了测试...

    基于 Java 的接口自动化测试.zip

    8. **持续集成与持续测试**:将接口自动化测试集成到CI/CD流程中,如Jenkins或GitLab CI,每次代码提交后自动运行测试,确保质量。 9. **测试报告**:生成详尽的测试报告,如extentreports,它提供了丰富的样式和...

    测试代码demo

    11. **自动化测试**:自动化测试使用脚本或工具自动执行测试,减少人工错误并提高效率。Selenium用于Web应用测试,Appium则用于移动应用。 12. **代码审查**:代码审查是检查测试代码质量的有效方法,通过同行评审...

    Python-基于Appium的微信小程序自动化测试方案

    在提供的压缩包文件`wxapp-appium-master`中,可能包含了示例代码、配置文件以及辅助工具,帮助读者更好地理解和实践这个微信小程序自动化测试方案。通过研究这些资源,可以进一步学习如何结合Appium和pytest实现...

    超易上手的API自动化测试平台源代码

    2、前端:请求后端接口,实现跟测试人员交互,测试环境录入、接口录入、用例录入、扩展脚本录入、制定执行计划、计划组,观看测试报告、收集每周 月 年自动化执行情况与节省人工等。 代码目录:platview;使用 vue-...

Global site tag (gtag.js) - Google Analytics