自动化测试

一.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()

相关推荐
IT 行者2 小时前
Web逆向工程AI工具:JSHook MCP,80+专业工具让Claude变JS逆向大师
开发语言·javascript·ecmascript·逆向
程序员 沐阳3 小时前
JavaScript 内存与引用:深究深浅拷贝、垃圾回收与 WeakMap/WeakSet
开发语言·javascript·ecmascript
Mr_Xuhhh4 小时前
Java泛型进阶:从基础到高级特性完全指南
开发语言·windows·python
He1955014 小时前
wordpress搭建块
开发语言·wordpress·古腾堡·wordpress块
老天文学家了5 小时前
蓝桥杯备战Python
开发语言·python
赫瑞5 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
初夏睡觉5 小时前
c++1.3(变量与常量,简单数学运算详解),草稿公放
开发语言·c++
升职佳兴5 小时前
C盘爆满自救:3步无损迁移应用数据到E盘(含回滚)
c语言·开发语言
ID_180079054735 小时前
除了 Python,还有哪些语言可以解析 JSON 数据?
开发语言·python·json
周末也要写八哥6 小时前
多进程和多线程的特点和区别
java·开发语言·jvm