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");