自动化测试selenium 1.selenium介绍
1.selenium工具是模拟用户操作,控制浏览器的工具 主要用于网页测试,是测试web段的主流的自动化测试工具 2.thoughtworks公司开发的
2.为什么流行?
跨操作系统、跨浏览器、跨语言、开源等等
3.selenium涉及的技术
java基本语法 html标签 css(层叠样式表) testNG框架 maven(导入需要的jar包)
4.应用
可以做回归测试 可以做业务流程 独立的功能测试
5.自动化测试的前提
手工测试已通过 需求稳定 产品或项目的周期要长 脚本可以复用 测试人员技能:懂业务、懂代码、懂测试
6.selenium工作原理
1.0→selenium-rc(远程控制服务器)+selenium-core 2.0→selenium1.0+webdriver 使用脚本语言→控制webdriver→控制浏览器→浏览器打开被控制的程序
7.selenium需要的组件
selenium-ide(集成开发环境) selenium-core(核心,最基础的代码) selenium-remote control server(远程控制服务器) selenium-api(应用程序编程接口) selenium webdriver(web驱动) selenium gird(提供脚本运行的环境)
8.selenium脚本语言如何选择
1.取决于测试人员的技能水平 2.根据项目要求,被测试系统的开发语言 3.语言对插件的支持情况 4.自动化测试框架的需要
- java→testNG
- python→unittest
9.环境搭建
编码环境:eclipse→JDK→配置环境变量
自动化软件环境:
- 浏览器:火狐35.0.1(设置不更新)
- 插件:selenium-ide-2.9.0.xpi、firebug
编码环境
1.maven作用与安装 作用:管理jar包,通过配置pom.xml文件,导入需要的jar包 安装:解压.zip包,放到D盘根目录下,目录名不能包含中文或空格
2.maven配置
-
环境变量: – 新建:变量名(M2_HOME)、变量值(D:\apache-maven-3.0.5[maven的解压路径]) – 修改:变量名(path)、变量值(;%M2_HOME%\bin) – 验证:cmd→mvn -version -
将maven与eclipse进行关联: – eclipse-window-perferences-maven-installations-add-选择“apache-maven-3.0.5”的存放路径 – 导入资源包:解压资源包m2.zip,拷贝到%USERPROFILE%,只能有一个。
3.创建maven项目
- file-new-other-maven-project-下一步-下一步-下一步
4.更新JRE版本
- 在JRE上右键-buildpath-configure-build path-edit-更新为1.7即可
5.配置pom.xml文件导入selenium相关的jar包
- 打开pom.xml文件
- 点击右下角的pom.xml,进入代码试图
- 添加selenium依赖(dependency)
- 点击保存左侧的maven
- dependencies中会导入大量的包
10.html基础
input、a(行级)、img、div(块级标签)、span(行级)
11.元素定位
(1)常用(输入框、按钮、图片):id、name、className
driver.findElement(By.id(''username")).sendKeys("admin");
driver.findElement(By.name(''password")).sendKeys("123qwe");
driver.findElement(By.className(''tight")).sendKeys("今天要努力哦!");
(2)链接(a标签):linkText、partialLinkText
driver.findElement(By.linkText("行检")).click(); # 拷贝全部文本时用
driver.findElement(By.patialLinkText("行")).click(); # 拷贝部分文本,但必须是连续的文本
(3)万能:xpath、css
// 定位方法:xpath
// 绝对路径
driver.findElement(By.xpath("/html/body/div[2]/div[1]/div[4]/div/ul/li[3]/a/span/b")).click();
// 相对路径
driver.findElement(By.xpath("//input[@value='查询']")).click();
driver.findElement(By.xpath("//img[1]")).click(); # 此相对路径下的第一个img元素
driver.findElement(By.xpath("//div[2]/div[1]/div[4]")).click();
// 定位方法:css
driver.findElement(By.cssSelector(input[value='查询'])).click();
(4)用的少:tagName
// 定位方法:tagName
driver.findElement(By.tagName("a")).click();
// 网页中标签唯一
// 网页中同一个标签如果出现多次,就不能用
(5)页面跳转
// 打开一个新窗口时,如何将鼠标由旧窗口移到新窗口
public static void main(String[] args){
jump(driver);
// jump()中的driver为形参
public static void jump(WebDriver driver){
// 获得旧窗口(当前窗口)的句柄,并存为变量
String old = driver.getWindowHandle();
for(String i : driver.getWindowHandles()){
if(i.equals(old)){
driver.close();
}else{
driver.switchTo().window(i);
}
}
}
}
(6)下拉框
Select se = new Select(driver.findElement(By.name("fruit")));
// 方式一:通过下标定位元素
se.selectByIndex(5);
// 方式二:通过value值定位元素
se.selectByValue("xigua")
// 方式三:通过可视化的文本内容(加汉字)定位元素
se.selectByVisibleText("猕猴桃")
(7)frame切换
// 跳进去再跳出来,再跳进下一个框架里操作,以此类推
// 逐层跳 逐层返
// 进入
driver.switchTo().frame("middleframe");
// 出来
driver.switchTo().defaultContent();
(8)鼠标悬停
// 将鼠标移到页面元素上
Actions as = new Actions(driver);
as.moveToElement(driver(By.linkText("手机、数码、通讯"))).perform();
(9)Alert弹窗处理
driver.switchTo().alert().accept(); // 确定
driver.seitchTo().alert().dismiss();// 取消
12.页面元素定位不到,可能的原因有哪些?
1.className或value等,取值包含空格 2.id、name、className等,同一页面取值重复 3.partialLinkText取部分值,部分值和网页其他值重复 4.tagName,多个同名标签存在 5.页面发生跳转,没有进行页面切换 6.页面出现alert弹窗未处理 7.页面中包含frame
- 网页存在frame,必须先进入frame,才能定位到frame里的元素
- 未进入frame
- 进入未出来
8.页面未加载全,需时间等待
13.自动化框架的搭建和使用:testNG
搭建:
- 1.通过配置pom.xml文件,添加testNG的依赖包
使用:
- 1.在maven项目里新建一个包,如com.testing.testng
- 2.创建一个testng的类:
选择包-new-other-tesng-testng class 技术: - 1.注解:@开头,如@Test,是程序执行的入口,充当main方法的角色,缺少他就不会运行出结果
– @Test(dependsOnMethods=“login”),作用:通过设置dependsOnMethods的值,控制方法执行的顺序 – @source,表明excel表格的存放路径,即指定数据来源 – @DataProvider,标记一个方法,作为一个测试方法的数据供应。@Test(DataProvider=“数据提供源”) - 2.参数化(数据驱动)
– 二维数组。 使用场景: 数据在代码里写死,代码与数据之间的关联性太强,将代码与数据分离开 – excel(读取excel中的数据) 将代码与测试数据彻底分离 – 批量执行测试用例 xml文件,指定要执行的代码 – 测试报告 选中项目-右键-refresh-项目中生成一个文件夹:test-output-选中文件夹中的index.html-右键-open with-Web Browser-即可查看报告(html网页版)
|