测试——Selenium

devtools/2024/10/18 8:20:26/

内容大纲:

什么是自动化测试

什么是Selenium

Selenium工作原理

Selenium环境搭建

Selenium API

目录

1. 什么是自动化测试

2. 什么是Selenium

3. Selenium工作原理

java)-toc" style="margin-left:0px;">4. Selenium环境搭建(java)

5. Selenium API

5.1 定位元素 

5.1.1 CSS选择器定位元素

5.1.2 XPath定位元素

5.1.3 标签定位元素

5.2 操作测试对象 

5.3 添加等待

5.3.1 强制等待sleep

5.3.2 隐式等待(更推荐)

5.3.3 显示等待

5.4 打印信息

5.4.1 打印title

5.4.2 打印url

5.5 浏览器的操作

5.5.1  浏览器最大化

5.5.2 设置浏览器的宽高

5.5.3 操作浏览器的前进、后退

5.5.4 控制浏览器滚动条

5.6 键盘事件

5.6.1 回车

5.6.2 组合 (A+C+V)

5.7 鼠标事件(右击)

5.8 窗口

5.9 截图

6. 几个小案例

6.1 定位一组元素

6.2 窗口定位

6.3 下拉框处理

6.4 定位弹窗

6.5 上传文件


1. 什么是自动化测试

将人工要做的测试工作进行转换,让代码去执行测试工作,这样是为了提高测试效率,提高测试产品的质量

2. 什么是Selenium

做UI自动化测试的一个工具

3. Selenium工作原理

 

三个角色:

  • 自动化脚本代码(在idea里面写的代码)
  • 驱动:有个这个驱动就可以对页面进行操作
  • 浏览器

java)">4. Selenium环境搭建(java)

在此不详细说明......

引入的依赖:

java">        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>

 

 

 

5. Selenium API

5.1 定位元素 

5.1.1 CSS选择器定位元素

  • 类选择器: .class值(.s_ipt)
  • id选择器: #id值(#kw)
  • 父类选择器 子类选择器: 父类选择器表达式 子类选择器表达式(#s_kw_wrap #kw)
  • 标签选择器:标签名(form)

举例说明:

 

 ③


 

5.1.2 XPath定位元素

  • 相对路径+索引://form/span[1]/input
  • 相对路径+属性值://input[@class="s_ipt"]
  • 相对路径+通配符://*[@*="s_ipt"]
  • 相对路径+文本匹配://span[text()=""]

举例说明:

 

 


5.1.3 标签定位元素

 

问:CSS选择器和XPath选择器,,哪个效率更高?

CSS 


5.2 操作测试对象 

  • click点击对象

  • send_keys 在对象上模拟按键输入
  • clear 清楚对象输入的文本内容
  • submit 提交
  • text用于获取元素的文本信息 

getText和getAttribute: 

getText'获取的元素在:

getAttribute获取的元素是一个属性值:

问:submit和click之间的区别:

submit操作的元素需要放在form标签中,否则会报错

click没有这个限制(更推荐)

此时submit报错


5.3 添加等待

5.3.1 强制等待sleep

 

5.3.2 隐式等待(更推荐)

 

5.3.3 显示等待

 


5.4 打印信息

5.4.1 打印title

 

5.4.2 打印url

 

 


5.5 浏览器的操作

5.5.1  浏览器最大化

 

5.5.2 设置浏览器的宽高

 

5.5.3 操作浏览器的前进、后退

 

5.5.4 控制浏览器滚动条

 


5.6 键盘事件

5.6.1 回车

5.6.2 组合 (A+C+V)


5.7 鼠标事件(右击)


5.8 窗口

当前的窗口:

获取所有窗口:

切换窗口:

 


5.9 截图

引入依赖:

java">        <!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.15.1</version></dependency>

 

6. 几个小案例

6.1 定位一组元素

描述:

 让矩形框的都勾上

java">private static void Page01(){WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test01.html?_ijt=g2mlnu74s9004ua0282u8h05lg&_ij_reload=RELOAD_ON_SAVE");List<WebElement> webElements = webDriver.findElements(By.cssSelector("input"));for (int i = 0; i < webElements.size(); i++){if (webElements.get(i).getAttribute("type").equals("checkbox")){webElements.get(i).click();}}
}

6.2 窗口定位

描述:

点击click

java">private static void Page02() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test02.html?_ijt=csarghoqcdtbu2pd8sdrhhka8v&_ij_reload=RELOAD_ON_SAVE");webDriver.switchTo().frame("f1");sleep(3000);webDriver.findElement(By.cssSelector("body > div > div > a")).click();
}

6.3 下拉框处理

描述:

选择其它

java">private static void Page03() throws InterruptedException {WebDriver webDriver = new ChromeDriver();//打开目标网页webDriver.get("http://localhost:63342/0720-test/Page/test03.html?_ijt=j61coa63ol45u8trp3tr5rjirr&_ij_reload=RELOAD_ON_SAVE");/*** 方法一:借助Select对象*/WebElement webElement = webDriver.findElement(By.cssSelector("#ShippingMethod"));sleep(3000);Select select = new Select(webElement);//通过序号选中选项,下标从0开始//select.selectByIndex(3);//sleep(3000);/*** 方法二:通过值*/select.selectByValue("8.34");}

6.4 定位弹窗

描述:

输入:某某.点击确认

 

java">private static void Page04() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test04.html?_ijt=hfa18g211latukccpp96p1gl28&_ij_reload=RELOAD_ON_SAVE");sleep(3000);webDriver.findElement(By.cssSelector("body > button")).click();sleep(3000);//点击了弹窗里面的取消webDriver.switchTo().alert().dismiss();//点中弹窗webDriver.findElement(By.cssSelector("body > button")).click();String name = "momo";//输入某某webDriver.switchTo().alert().sendKeys("momo");sleep(3000);//弹窗确认webDriver.switchTo().alert().accept();//校验String text = webDriver.findElement(By.cssSelector("body > div:nth-child(5)")).getText();if (text.equals(name)){System.out.println("测试通过");}else {System.out.println("测试不通过");}
}

6.5 上传文件

描述:

选择文件之后:

java">private static void Page05() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test05.html?_ijt=c69p92i1r4598lea74dko8r147&_ij_reload=RELOAD_ON_SAVE");sleep(3000);//上传文件webDriver.findElement(By.cssSelector("body > input[type=file]")).sendKeys("C:\\Users\\27695\\Desktop\\bit\\3.MySQL\\01 MySQL安装与配置.pdf");}


http://www.ppmy.cn/devtools/85903.html

相关文章

鸿蒙(API 12 Beta2版)【创建NDK工程】

创建NDK工程 下面通过DevEco Studio的NDK工程模板&#xff0c;来演示如何创建一个NDK工程。 说明 不同DevEco Studio版本的向导界面、模板默认参数等会有所不同&#xff0c;请根据实际工程需要&#xff0c;创建工程或修改工程参数。 通过如下两种方式&#xff0c;打开工程创…

信息安全工程师下午题

试题一(共 20 分) 阅读下列说明和图&#xff0c;回答问题 1 至问题 5&#xff0c;将解答填入答题纸的对应栏内。【说明】已知某公司网络环境结构主要由三个部分组成&#xff0c;分别是 DMZ 区、内网办公区和生产区&#xff0c;其拓扑结构如图 1-1 所示。信息安全部的王工正在按…

数据结构与算法--【数组2】力扣练习 || 双指针 / 移除元素 / 数组排序

注意&#xff1a;官方说法&#xff0c;快慢指针就是双指针。我在文章用两种不同的叫法&#xff0c;主要是根据字面意思更好的区分两个指针初始的指向&#xff0c;以便更快确定算法怎么写。 一、移除元素 对于数组来说&#xff0c;移除元素只是进行元素的“覆盖”。 解法&…

hicp学习 VRRP选举过程、MSTP+VRRP混合组网

VRRP 的选举规则 1、先比优先级&#xff0c;越大越优先&#xff0c;默认优先级是100.范围 0-255&#xff0c;可配置的范围是1-254。0和255这两个优先级是保留的不配置 0&#xff1a;用来告诉 Backup 立即成为 Master。一般是 Master 设备主动退出 VRRP 组&#xff08;人为删除…

RuoYi-Vue 全新 Pro 版本:清除url地址栏路由参数

问题&#xff1a;当前页面保存数据后&#xff0c;要清空当前地址栏的参数。 页面A开始跳转到B //页面A跳转this.$router.push({path: "你的path",query: {id: id,},}); 页面B开始接收数据 //页面B&#xff0c;在你需要的地方进行接收 this.$route.query.id 当点…

高效能程序员的9个习惯

最近看了一本关于敏捷软件开发实践的指南&#xff0c;他文中主要是在帮助软件开发者和团队提升工作效率、提高产品质量&#xff0c;并建立良好的工作文化和协作模式。以下是根据目录整理出的一段总结&#xff1a; 书名&#xff1a;《敏捷之道》 本书深入探讨了敏捷开发的核心原…

【Langchain大语言模型开发教程】评估

&#x1f517; LangChain for LLM Application Development - DeepLearning.AI 学习目标 1、Example generation 2、Manual evaluation and debug 3、LLM-assisted evaluation 4、LangChain evaluation platform 1、引包、加载环境变量&#xff1b; import osfrom dotenv imp…

《昇思 25 天学习打卡营第 21 天 | LSTM+CRF序列标注模型实现 》

《昇思 25 天学习打卡营第 21 天 | LSTMCRF序列标注模型实现 》 活动地址&#xff1a;https://xihe.mindspore.cn/events/mindspore-training-camp 签名&#xff1a;Sam9029 序列标注问题概述 序列标注是信息抽取中的一个关键任务&#xff0c;包括分词、词性标注、命名实体识别…