已经写到了第四篇了,也是selenium自动化的最后一篇了。当然了,自动化不止这些,还有很多很多的内容,学无止境。
前情回顾
一、搭建自动化测试环境
项目>>浏览器+浏览器驱动+selenium(语言)
PHP的web项目>>Firefox+geckodriver+selenium-Java(Java+maven+testng)
二、测试代码
WebDriver driver = new FirefoxDriver();打开浏览器,获取驱动driver对象
driver.manage().window().maximize();窗口最大化
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);隐式等待15s,建议不要太长
driver.get("网址");访问对应页面,自带阻塞效果
driver.findElement(定位方式)定位元素,只能定位符合规则的第一个,必须定位到,否则报错
driver.findElements(定位方式),定位所有符合规则的元素,可以定位0-n个,经常判断定位是不是0判断元素是否存在
By.id\\name\className\xpath\linkText\tagName\cssSelector\partialLinkText\xpath和cssSelector(xpath效率低,元素支持率高;cssSelector效率高,元素支持率低)
click点击
cleaar 清空输入框
Actions类,selenium中各种操作
Select类,操作下拉框:selectByIndex选择;deselectByIndex;不选
driver.switchTo()
.alert().accept();确定
.dismiss();取消
.sendKeys("");输入
.window("新窗口的handle");
.frame(索引);
.frame("frame元素的id或name值");
.frame(frame元素);
.defaultContent();
.parentFrame();driver.getCurrentUrl();获取网址
driver.getTitle(); 获取标题
driver.getPageSource();获取页面源码
driver.close();关闭当前的窗口,如果是最后一个,会同时关闭浏览器
driver.quit(); 关闭驱动,关闭所有窗口,退出浏览器
搭建环境
testng--自动化测试>>功能自动化
testng实现自动化测试>>用于编写和执行自动化测试用例。主方法中的代码,一条崩溃,都不执行,但是用例希望一条错误,其它不受影响。控制用例的执行顺序,自动化测试报告生成,.....
搭建testng的编写和运行环境:在项目中导入testng的jar文件,主要用于编写脚本
在pom.xml里面添加依赖,然后保存
<!--testng依赖 -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
<!--/testng依赖 --><!--feed4testng依赖 -->
<dependency>
<groupId>org.databene</groupId>
<artifactId>feed4testng</artifactId>
<version>0.6.2</version>
<scope>test</scope>
</dependency><dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
<scope>test</scope>
</dependency>
<!--/feed4testng依赖 -->
然后右边库会出现几个文件
testng插件呢我们idea自带,不用下载
编写自动化测试用例
编写的是执行测试用例的步骤,一般编写用例时,不相关的用例不会写到一起
一、一个class中写入1条用例,执行1遍,执行写死的数据
创包autotest04,创建class类 Testng1.class
在类里面声明一个变量,让方法可以共用
public class Testng1 {
// 声明一个变量在类中 作用于类中所有方法 希望3个方法共用一个driver
WebDriver driver;
使用@Test
/*
* 一个使用@Test修饰的普通方法就是一条测试用例
* 用例中没有报错,用例通过
* 用例中报错崩溃,用例失败
*/
@Test
创建方法a
public void a() {
//用例的执行步骤 调用driver操作浏览器执行测试
//用例的结果判断--1.用例通过,不能报错; 2.用例失败,必须崩溃---断言
}
创建两个方法
/*
* 为了保证无论用例执行结果如何, 是否报错