赞
踩
目录
5.5 获取文本、获取属性对应的值(注意区分)、获取页面的标题和URL
6.1 窗口的大小设置:最大化、最小化、全屏窗口、手动设置窗口大小
优点:通过自动化测试有效减少人力的投入,同时提高了测试的质量和效率。
也用于回归测试。随着版本越来越多,版本回归的压力越来越大,仅仅通过人工测试 来回归所以的版本肯定是不现实的,所以我们需要借助自动化测试。
接口自动化测试
UI自动化测试(界面测试):
移动端自动化测试
web端自动化测试
答:1)开源免费
2)支持多浏览器。如:Chrome、Firefox、IE浏览器等等
3)支持多系统。如:Linux、Windows、MacOS.....
4)支持多语言。如:Java、Python、CSharp、Ruby、JavaScript、Kotlin
5)selenium包里提供了很多可供测试使用的API。
使用selenium实施web自动化测试,需要的环境有:
- Chrome浏览器
- 谷歌驱动(ChromeDriver)
- selenium工具包
一个简单的自动化代码示例:
首先导入selenium包:
- <dependency>
- <groupId>org.seleniumhq.selenium</groupId>
- <artifactId>selenium-java</artifactId>
- <version>4.0.0</version>
- </dependency>
简单自动化百度搜索蔡徐坤代码:
- public void caixukunTest() throws InterruptedException {
- //打开浏览器
- ChromeDriver driver = new ChromeDriver();
- Thread.sleep(2000);
- //在浏览器输入百度网址,访问百度网页
- driver.get("https://www.baidu.com");
- Thread.sleep(2000);
- //找到百度首页的输入框元素,输入关键词 蔡徐坤
- driver.findElement(By.cssSelector("#kw")).sendKeys("蔡徐坤");
- Thread.sleep(2000);
- //找到百度首页”百度一下“按钮,并点击
- driver.findElement(By.cssSelector("#su")).click();
- Thread.sleep(2000);
- //结束会话(关闭浏览器)
- driver.quit();
- }
简单自动化实例的五个主要步骤:
- 创建驱动实例,创建会话
- 访问网站
- 查找元素
- 操作元素
- 结束会话
findElement()
参数:By类(提供什么方式来查找元素)
返回值:webElement
findElements()
参数:By类(提供什么方式来查找元素)
返回值:List<WebElement>
selector:基础选择器/复合选择器
功能:选中页面中指定的标签元素
xpath
语法:
- 层级:/子级 // 跳级
- 属性:@
- 函数:contains()......
自动化里要求元素的定位必须唯一。但是在手动复制selector或者xpath元素的时候不一定是唯一的,需要我们手动修改到唯一的。
sendKeys();
仅适用于文本字段和内容可编辑的元素;
click();
submit();
selenium官方不推荐使用submit,更推荐使用click,仅适用于表单元素。
clear();
用于频繁测试输入是否可以重复输入。
获取文本:getText()
获取属性对应的值:getAttribute()
获取页面的标题和URL:
当浏览器每次打开一个标签页的时候,会自动的给每个标签页进行标识(句柄)。
保存屏幕截图所用到的包:
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.6</version>
- </dependency>
实例代码:
- //屏幕截图,保存现场
- File srcfile = driver.getScreenshotAs(OutputType.FILE);
- //把屏幕截图放到指定的路径下
- String filename = "my.png";
- FileUtils.copyFile(srcfile,new File(filename));
注意:
程序执行速度比浏览器渲染的速度要快得多,所以我们需要让程序等待一会。
四种等待:强制等待、隐式等待、显示等待、流畅等待。
- void waitControl(){
- //添加隐式等待
- driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
- driver.get("https://www.baidu.com");
- driver.findElement(By.cssSelector("#kw")).sendKeys("章若楠");
- driver.findElement(By.cssSelector("#su")).click();
- driver.findElement(By.cssSelector("#\\31 > div > div > div > div > div > div.cos-row.row-text_Johh7.row_5y9Az > div > div.title-wrapper_XLSiK > a > div > p > span > span"));
- driver.quit();
- }
显示等待:当运行到需要等待的代码的时候,才会进行轮询
- void webDriverWait(){
- driver.get("https://www.baidu.com");
- driver.findElement(By.cssSelector("#kw")).sendKeys("章若楠");
- driver.findElement(By.cssSelector("#su")).click();
- //添加显示等待
- new WebDriverWait(driver,Duration.ofSeconds(3)).
- until(driver->driver.findElement(By.cssSelector("#\\31 > div > div > div > div > div > div.cos-row.row-text_Johh7.row_5y9Az > div > div.title-wrapper_XLSiK > a > div > p > span > span")));
- driver.quit();
- }
浏览器的前进、后退、刷新。
弹窗的类型:警告弹窗、确认弹窗、提示弹窗。
处理弹窗的步骤:
- //切换到弹窗进行弹窗的处理
- Alert alert = driver.switchTo().alert();
- Thread.sleep(2000);
- //1、点击确认
- alert.accept();
- //2、点击取消
- alert.dismiss();
- //3、输入文本
- alert.sendKeys("asdfasdcdsa");
选择框的选择方式:
- //先找到选择框元素
- WebElement ele = driver.findElement(By.cssSelector("#username"));
- //先穿创建选择框对象
- Select select = new Select(ele);
- Thread.sleep(2000);
- //根据文本选择
- select.selectByVisibleText("2021-12-12");
- //根据属性值来选择
- select.selectByValue("12.12");
- //根据序号来选择
- select.selectByIndex(1);
executScript()参数:js代码
- driver.get("https://www.baidu.com");
- driver.executeScript("document.documentElement.scrollTop=0");
sendKeys(“文件路径+文件”)
driver.findElement(By.cssSelector("#kw")).sendKeys("C:\\HonorStoreDownload\\WebCache");
实际在工作中,测试人员将自动化部署在机器上自动的执行,测试人员不会每次都盯着自动化执行的过程,而是直接查看自动化执行的结果。
无头模式:
- void HeadlessControl(){
- //先创建对象,再设置浏览器参数
- ChromeOptions options = new ChromeOptions();
- //options.addArguments("-headless");
- ChromeDriver driver = new ChromeDriver();
- driver.get("https://www.baidu.com");
- driver.findElement(By.cssSelector("#kw")).sendKeys("章若楠");
- driver.findElement(By.cssSelector("#su")).click();
- driver.quit();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。