自动化测试

一.Selenium

1.安装selenium

java 复制代码
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.0.0</version>
</dependency>

2.使用selenium下载浏览器驱动

以Chrome浏览器为例,可以添加隐式等待------放视元素加载过慢/没出现时自动化报错

javascript 复制代码
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");

3.通过driver对象来创建

打开浏览器

javascript 复制代码
WebDriver driver = new ChromeDriver(options);

输入URL

javascript 复制代码
driver.get();

二.元素定位

1.cssSelector

选择第几个------nth-child()

下一级------'>'

2.xpath

1.获取HTML所有页面------//*

2.获取页面指定的元素------//body中的标签名

3.获取子节点------/

4.元素匹配@元素名=''

5.选择第几个用\[\](1为开始)

三.选择元素

使用cssSelector

复制代码
WebElement用于单个元素接收
javascript 复制代码
driver.findElement(By.cssSelector(""));

用List<WebElement>多个元素接收的参数

javascript 复制代码
driver.findElements(By.cssSelector(""));

使用xpath

WebElement用于单个元素接收

javascript 复制代码
driver.findElement(By.xpath(""));

用List<WebElement>多个元素接收的参数

javascript 复制代码
driver.findElements(By.xpath(""));

四.使用测试对象

点击------click()

输入------senKeys(" ")

清除------clear()

获取元素文本------getText()

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

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

五.窗口切换

1.获取当前页面句柄

driver.getWindowHandle()

2.获取所有⻚⾯句柄

driver.getWindowHandles()

3.切换句柄

driver.switchTo().window(窗口句柄)

六.窗口大小切换

窗口最大化

driver.manage().window().maximize()

窗口最小化

driver.manage().window().minimize()

全屏窗口

driver.manage().window().fullscreen()

自定义窗口大小

driver.manage().window().setSize(new Dimension(长,宽))

七.屏幕截图

1.添加包

javascript 复制代码
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

2.操作

javascript 复制代码
File  file=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File("路径+文件名.格式"));

八.等待

1.强制等待

Thread.sleep()

2.隐式等待

driver.manage().timeouts().implicitlyWait(Duration.选择的时间单位());、
隐式等待作用域是整个脚本的所有元素。即只要driver对象没有被释放掉,隐式等待就⼀直⽣效

3.显示等待

javascript 复制代码
WebDriverWait foo = new WebDriverWait(driver, Duration.ofSeconds(等待时间))
foo.until(ExpectedConditions.elementToBeClickable(By.cssSelector("")));

ExpectedConditions方法
1.elementToBeClickable(By locator)------用于检查想要查找的元素是否启用
2.textToBe(Bylocator,String str)------检查元素
3.presenceOfElementLocated(Bylocator)------检查⻚⾯的 DOM 上是否存在元素
4.urlToBe(java.lang.String url)------检查当前⻚⾯的 URL 是⼀个特定的 URL

九.浏览器操作

1.打开⽹站

javascript 复制代码
driver.navigate().to("URL");
driver.get("URL");

2.前进、后退、刷新

javascript 复制代码
driver.navigate().back();后退
driver.navigate().forward();前进
driver.navigate().refresh();刷新

十.弹窗

1.切换到弹窗窗口

javascript 复制代码
Alert alert = driver.switchTo.alert()

2.确认

javascript 复制代码
alert.accept()

3.取消

javascript 复制代码
alert.dismiss()

4.输入文本消息

javascript 复制代码
alert.sendKeys("输入内容")

5.获取弹窗上的提示文本

javascript 复制代码
String getText()

十一.关闭窗口

driver.close()

相关推荐
昔我往昔3 分钟前
chromadb 这个query_texts 查询的是基于分词还是基于向量查询的
python·chromadb
鸿业远图科技15 分钟前
抚顺市_公交站点
python
VidDown20 分钟前
上线三个月后的第一次事故:一个 Django 服务的日志、监控与故障复盘
数据库·python·django·wpf·音视频·视频编解码
马优晨21 分钟前
Java中的dto是什么
java·开发语言·java中的dto是什么·java的dto是什么·dto在java中是什么
itmigrate32 分钟前
PHP 导出大 CSV 时内存溢出的一次排查
android·开发语言·php
打工仔折腾 AI1 小时前
Spring AI + Qwen 周报生成实战:从原始日志到人工确认卡
人工智能·后端·python·spring·elasticsearch·ai agent 实战
YSL0701241 小时前
一文通关-----栈和队列
开发语言·数据结构
维克兜率天1 小时前
【维克】统计套利建模:从因子到信号的完整流程
android·开发语言·python·算法·kotlin
全栈练习生1 小时前
RAG 准确率提升体系化方案
python·ai
Pin_Qing1 小时前
同一天,谷歌半价卖旗舰,阶跃翻倍收缓存
大数据·开发语言·人工智能·程序人生·缓存