IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 1.自动化测试selenium -> 正文阅读

[开发测试]1.自动化测试selenium

自动化测试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网页版)
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:50:56  更:2021-09-04 17:51:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:15:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码