Web自动化测试
目录
一、搜索功能
二、定位的方式
三、操作测试对象
四、屏幕截图
五、等待
六、弹窗
一、搜索功能
web自动化测试就是对一个网站进行自动测试和手工测试的步骤相同。
手工测试的步骤
1、打开浏览器
2、输入网址:https://www.baidu.com
3、找到百度的输入框,输入关键词
4、找到百度一下并点击
5、关闭浏览器
web自动化测试的步骤
1、安装驱动
在编写程序时,需要使用selenium方法来编写自动化脚本代码,所以需要引用selenium驱动。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
要启动浏览器,所以也要引用启动浏览器的引用
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
</dependency>
2、编写代码
public class TestCase {
void test() throws InterruptedException {
//1、驱动打开浏览器
WebDriverManager.chromedriver().setup();
//方便查看操作步骤
Thread.sleep(3000);
//修改浏览器权限,允许访问所有链接
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
//创建浏览器对象
WebDriver driver=new ChromeDriver(options);
Thread.sleep(3000);
//2、输入正确的网址
driver.get("https://www.baidu.com");
Thread.sleep(3000);
//3、找到输入框
driver.findElement(By.cssSelector("#kw")).sendKeys("搜索内容");
Thread.sleep(3000);
//4、找到百度一下按钮并点击
driver.findElement(By.cssSelector("#su")).click();
Thread.sleep(3000);
//5、关闭浏览器
driver.quit();
}
}
public class TestRun {
public static void main(String[] args) throws InterruptedException {
TestCase testCase=new TestCase();
testCase.test();
}
}
二、定位的方式
定位页面上某个模块,可以使用cssSelector选择器和Xpath写法
//放入要定位的内容
driver.findElement(By.cssSelector(""));
driver.findElement(By.xpath(""));
三、操作测试对象
操作对象
方法 | 作用 |
click(); | 点击 |
sendkeys(); | 模拟键盘输入 |
clear(); | 清除 |
getText(); | 获取文本信息 |
getTitle(); | 获取页面标题 |
getCurrentUrl(); | 获取当前页面的URL |
窗口设置
//窗口最大化
driver.manage().window().maximize();
//窗口最小化
driver.manage().window().minimize();
//全屏窗口
driver.manage().window().fullscreen();
//手动设置窗口大小
driver.manage().window().setSize(new Dimension(1,1));
窗口页面切换
//获取当前页面的句柄
String handle= driver.getWindowHandle();
//获取所有页面的句柄
String allHandles= driver.getWindowHandles().toString();
//切换句柄
for (String handle:allHandles){
if (handle!=curHandle){
//切换
driver.switchTo().window(handle);
}
}
四、屏幕截图
1、基础截图方法
//截屏方法
File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//把图片复制到目的地址
FileUtils.copyFile(srcFile,new File("my.png"));
2、进阶截屏方法
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());
//图片的位置
String filename = "./src/test/image/" + dirTime + "/" + str + "-" + fileTime + ".png";
System.out.println("filename:" + filename);
//加上基础截屏的方法
File srcFile =((TakesScreenshot)this.driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile, new File(filename));
}
五、等待
等待分为强制等待,隐式等待和显式等待。
1、强制等待
Thread.sleep();
优点:写法简单
缺点:极大的增加了自动化的执行时间
2、隐式等待
隐式等待是一种智能等待,可以规定在查找元素时,在指定的时间内进行不断查找元素,如果找到了,则代码继续执行,直到超时没有找到元素就会报错。
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//单位s
优点:智能等待,作用于全局
缺点:只能查找元素,要是有其他操作,就会强制等待,每次查找元素都会等待
3、显式等待
显式等待也是一种智能等待,在指定的时间范围内,只要满足操作条件,就会继续执行后续代码。
//要执行的操作必须是ExpectedConditions类下的操作 new WebDriverWait(driver,Duration.ofSeconds(3)).until();
显式等待,只作用于当前的条件上。
六、弹窗
弹窗分为警告弹窗,确认弹窗和提示弹窗。
弹窗不能定位,只能通过方法切换到弹窗上。
这三类弹窗,主要对应的操作为点击确认,点击取消,输入文本信息。
//先切换到弹窗上
Alert alert=driver.switchTo().alert();
//确认
alert.accept();
//取消
alert.dismiss();
//输入文本信息
alert.sendKeys("hello");