当前位置: 首页 > news >正文

[三分钟]web自动化测试(二):selenium自动化测试常用函数(上)

文章目录

  • 1.元素定位
    • 1.1 cssSelector(选择器)
    • 1.2 xpath
    • 1.3小示例
  • 2.操作测试对象
    • 2.1点击/提交对象-click()
    • 2.2 模拟按键输入-sendKeys("")
    • 2.3 清除文本内容-clear()
    • 2.4 获取文本信息-getText()
    • 2.5 获取当前页面标题-getTitle()
    • 2.6获取当前页面URL-getCurrentUrl()
  • 3.窗口
    • 3.1 切换窗口
    • 3.2 窗口设置大小
    • 3.3 屏幕截图
    • 3.4关闭窗口

1.元素定位

web自动化测试的操作核心是能够找到页面对应的元素。

如何手动在网页页面中查找元素

  1. 打开开发者工具
    方法一:右键---->检查
    方法二:ctrl + shift + i
    方法三:F12
    在这里插入图片描述

  2. 点击右上角的箭头
    在这里插入图片描述

  3. 例如找搜索框对应的元素
    在这里插入图片描述
    在web自动化测试中常见的元素定位方式非常多,如id,classname,tagname,xpath,cssSelector。常用的主要由cssSelector和xpath

1.1 cssSelector(选择器)

功能:选中页面中指定的标签元素
选择器的种类分为基础选择器和复合选择器常见的元素定位方式可以通过id选择器和子类选择器来
进行定位。

  1. id选择器
    功能:选取某个id的元素
    格式:#id
    例如:百度搜索框的id选择器,该元素的id为kw,id选择器为#kw
    在这里插入图片描述
    在这里插入图片描述
  2. 子类选择器
    功能:选中某个元素下的直接子元素。
    格式:div > p
    例如:寻找百度热搜元素
    在这里插入图片描述
    复制到搜索框:#s-hotsearch-wrapper > div > a.hot-title > div
    在这里插入图片描述
    #s-hotsearch-wrapper > div > a.hot-title > div ==> 往#s-hotsearch-wrapper的子类里面找
    在这里插入图片描述

1.2 xpath

XML路径语言,不仅可以在XML文件中查找信息,还可以在HTML页面中选取元素。
在这里插入图片描述

语法:
1.2.1 获取HTML页面所有的节点

//*

1.2.2 获取HTML页面指定的节点

//[指定节点]
//ul :获取HTML⻚⾯所有的ul节点
//input:获取HTML⻚⾯所有的input节点

1.2.3 获取⼀个节点中的直接子节点

/
//span/input

1.2.4 获取⼀个节点的父节点

..
//input/.. 获取input节点的⽗节点

1.2.5 实现节点属性的匹配

[@...]
//*[@id='kw'] 匹配HTML⻚⾯中id属性为kw的节点

1.2.6 使用指定索引的方式获取对应的节点内容

注意:xpath的索引是从1开始的。
百度首页通过://div/ul/li[3] 定位到第三个百度热搜标签

1.3小示例

使用选择器和xpath定位百度热搜,并查找所有的热搜词条

方法名作用返回值
findElement(By)在页面中查找元素WebElement
findElements(By)在页面中查找多个元素List< WebElement >
public class FirstAutoTest {WebDriver driver = null;void createDriver() {// 1.打开谷歌浏览器WebDriverManager.chromedriver().setup();// 浏览器配置:允许访问所有链接ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");driver = new ChromeDriver(options);// 2.输入网址:https://www.baidu.comdriver.get("https://www.baidu.com");}// 测试元素定位void test02() {createDriver();// 选择器driver.findElement(By.cssSelector("#s-hotsearch-wrapper > div > a.hot-title > div"));// xpathdriver.findElement(By.xpath("//*[@id=\"s-hotsearch-wrapper\"]/div/a[1]/div"));// 查找多个热搜词条List<WebElement> list = driver.findElements(By.cssSelector("#hotsearch-content-wrapper > li > a > span.title-content-title"));for (WebElement x:list) {System.out.println(x.getText());}driver.quit();}public static void main(String[] args) throws InterruptedException {FirstAutoTest test = new FirstAutoTest();test.test02();}
}

运行结果
在这里插入图片描述

2.操作测试对象

获取到了元素,我们便可以对元素进行操作了。
常见的操作有点击、提交、输入、清除、获取文本。

2.1点击/提交对象-click()

click()
//找到百度⼀下按钮并点击
driver.findElement(By.cssSelector("#su")).click();

注意: 页面隐藏的标签,不可见的标签不能点击。

2.2 模拟按键输入-sendKeys(“”)

sendKeys("")
// 在百度搜索框中输入“CSDN”
driver.findElement(By.cssSelector("#kw")).sendKeys("CSDN");

2.3 清除文本内容-clear()

clear()
driver.findElement(By.cssSelector("#kw")).sendKeys("玩游戏");
driver.findElement(By.cssSelector("#kw")).clear(); // 清空搜索框
driver.findElement(By.cssSelector("#kw")).sendKeys("写作业");

2.4 获取文本信息-getText()

getText()
// 查找并打印热搜词条List<WebElement> list = driver.findElements(By.cssSelector("#hotsearch-content-wrapper > li > a > span.title-content-title"));for (WebElement x : list) {System.out.println(x.getText());}

注意:文本和属性值不要混淆了。获取属性值需要使用方法 getAttribute(“属性名称”) ;

2.5 获取当前页面标题-getTitle()

getTitle()

2.6获取当前页面URL-getCurrentUrl()

getCurrentUrl()

举例

String title = driver.getTitle();
String currentUrl = driver.getCurrentUrl();
System.out.println("title = " + title);
System.out.println("Url = " + currentUrl);

在这里插入图片描述

3.窗口

我们可以通过眼睛来判断当前的窗口是哪一个。对于程序而言,每个浏览器窗口的唯⼀的属性==句柄(handle)==就是它的眼睛。我们可以通过句柄来切换窗口。
在这里插入图片描述

3.1 切换窗口

1)获取当前页面句柄:

driver.getWindowHandle();

3)获取所有页面句柄:

driver.getWindowHandles();

3)切换当前句柄为最新页面

String curWindow = driver.getWindowHandle();
Set<String> allWindow = driver.getWindowHandles();
for( String w : allWindow){if(w!=curWindow){driver.switchTo().window(w);}
}

3.2 窗口设置大小

//窗⼝最⼤化
driver.manage().window().maximize();
//窗⼝最⼩化
driver.manage().window().minimize();
//全屏窗⼝
driver.manage().window().fullscreen();
//⼿动设置窗⼝⼤⼩
driver.manage().window().setSize(new Dimension(1024, 768));

3.3 屏幕截图

如果程序出现了报错,我们可以通过抓拍来记录当时的错误场景。
要使用FileUtils类,先在pom.xml中额外导入包

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
  1. 低级屏幕截图:
File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file, new File("test.png"));

在这里插入图片描述
2. 高级屏幕截图
将图片保存到:./src/test/image/年月日/方法名-时分秒毫秒.png

public class FirstAutoTest {WebDriver driver = null;void createDriver() {// 1.打开谷歌浏览器WebDriverManager.chromedriver().setup();// 浏览器配置:允许访问所有链接ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");driver = new ChromeDriver(options);// 2.输入网址:https://www.baidu.comdriver.get("https://www.baidu.com");}// 高级屏幕截图void getScreenShot(String str) throws IOException {// 截屏时间SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS"); // 精确到毫秒String dirTime = sim1.format(System.currentTimeMillis());String fileTime = sim2.format(System.currentTimeMillis());// ./src/test/image/年月日/方法名-时分秒毫秒.pngString fileName = "./src/test/image/" + dirTime + "/" + str + "-" + fileTime + ".png";System.out.println("fileName: " + fileName);File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(file, new File(fileName));}void test05() throws IOException {createDriver();getScreenShot(getClass().getName());getScreenShot(getClass().getName());}public static void main(String[] args) throws InterruptedException, IOException {FirstAutoTest test = new FirstAutoTest();test.test05();}
}

结果
在这里插入图片描述

3.4关闭窗口

driver.close(); // 关闭当前的标签页 
// 窗⼝关闭后driver要重新定义

相关文章:

  • HarmonyOS Next~鸿蒙系统流畅性技术解析:预加载与原生架构的协同进化
  • vite.config.ts 的详细配置项说明、完整代码示例及表格总结
  • Nacos简介—4.Nacos架构和原理三
  • 英语中时间的表达
  • 数据一致性问题剖析与实践(四)——竞态条件竞争导致的一致性问题
  • C++入门小馆: STL 之queue和stack
  • JavaScript输出数据的方法
  • 解决qnn htp 后端不支持boolean 数据类型的方法。
  • 如何创建并使用极狐GitLab 部署令牌?
  • shell命令二
  • 迈锐思C1pro插件安装包【附百度网盘链接】
  • 用户行为检测技术解析:从请求头到流量模式的对抗与防御
  • DataStreamAPI实践原理——快速上手
  • 【quantity】2 Unit 结构体(unit.rs)
  • S08-电机功能块讨论
  • 全新升级:BRAV-7601-T003高性能无风扇AI边缘计算系统,助力智能未来!
  • 智能指针之设计模式5
  • Xray-安全评估工具
  • 19.TVS特性与使用注意事项
  • 学习spark-streaming收获
  • 七部门联合发布《终端设备直连卫星服务管理规定》
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • 聚焦各领域顶尖工匠,《上海工匠》第十季于五一播出
  • 欢迎回家!神十九返回舱成功着陆
  • 马上评|“AI神医宇宙”欺诈,连演员都不请了
  • 全过程人民民主研究基地揭牌,为推动我国民主政治建设贡献上海智慧