欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 自动化测试常用函数

自动化测试常用函数

2025/7/2 5:09:11 来源:https://blog.csdn.net/Heliotrope_Sun/article/details/147647121  浏览:    关键词:自动化测试常用函数
唯有热爱,恒常如新

一、元素的定位

web自动化测试的核心操作是能够找到页面对应的元素,然后才能对元素进行具体的操作。

常见的元素定位方式非常多,如:id,classname,tagname,xpath,cssSelector

常见有cssSelectorxpath


1. cssSelector

选择器的功能:选中页面中指定的标签元素

选择器的种类分为基础选择器和复合选择器,常见的元素定位方式可以通过id选择器和子类选择器来进行定位。

2.xpath

2.1 获取HTML页面所有的节点

//*

2.2 获取HTML页面指定的节点

//[ 指定节点 ]

//ul :获取HTML页面所有的ul节点

//input :获取HTML页面所有的input节点

2.3 获取一个节点中的直接子节点

/

//span/input

2.4 获取一个节点的父节点

..

//input/.. 获取input节点的父节点

2.5 实现节点属性的匹配

[ @ ... ]

//*[@id='kw'] 匹配HTML页面中id属性为kw的节点

2.6 使用指定索引的方式获取对应的节点内容

注意:xpath的索引是从1开始的。

百度首页通过://div/ul/li[3]定位到第三个百度热搜标签

便捷生成selector/xpath的方法:右键选择复制“Copy selector/xpath”

注:元素的定位方法唯一


二、操作测试对象

1.点击/提交对象

click()

//找到百度一下按钮并点击
driver.findElement(By.cssSelector("#su")).click();

2. 模拟按键输入

sendKeys(" ")

driver.findElement(By.cssSelector("#kw")).sendKeys("输入文字");

3. 清除文本内容

clear()

driver.findElement(By.cssSelector("#kw")).sendKeys("我爱游戏");
driver.findElement(By.cssSelector("#kw")).clear();
driver.findElement(By.cssSelector("#kw")).sendKeys("我爱学习");

4. 获取文本信息

getText()


5. 获取当前页面标题

getTitle()


6. 获取当前页面url

getCurrentUrl()


三、窗口

每个浏览器窗口都有一个唯一的属性句柄(handle)来表示,

我们可以通过句柄来切换窗口。

1.切换窗口

1.1 获取当前页面句柄:

driver.getWindowHandle();

1.2 获取所有页面句柄:

driver.getWindowHandles();

切换当前句柄为最新页面:

String curWindow = driver.getWindowHandle();
Set<String> allWindow = driver.getWindowHandles();
for(String w : allWindow) {if(w!=curWindow) {driver.switchTo().window(w);}
}

注:执行了driver.close()之前需要切换到未被关闭的窗口


2.窗口设置大小

//窗口最大化
driver.manage().window().maximize();
//窗口最小化
driver.manage().window().minimize();
//全屏窗口
driver.manage().window().fullscreen();
//手动设置窗口大小
driver.manage().window().setSize(new Dimension(1024,768));

3.窗口切换

去掉等待后,获取跳转后的页面元素失败

//获取所有句柄
//获取当前停留页面句柄
String curWindow = driver.getWindowHandle();
Set<String> allWindow = driver.getWindowHandles();
for(String w : allWindow) {if(w!=curWindow) {driver.switchTo().window(w);}
}

4.屏幕截图

File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File(filename));

5.关闭窗口

driver.close();

注:窗口关闭后driver要重新定义


四、等待

1.强制等待

Thread.sleep()

优点:使用简单,测试时比较有效

缺点:影响运行效率,浪费大量时间

2.隐式等待

隐式等待是一种智能等待,可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执行,直到超时没找到元素才会报错。

implicitlyWait() 参数:Duration类中提供的毫秒、秒、分钟等方法

//隐式等待1000毫秒
driver.manage().timeouts().implicitlyWait(Duration.ofMillis(1000));
//隐式等待5秒
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

隐式等待作用域是整个脚本的所有元素。只要driver对象没有被释放掉,隐式等待就一直生效。

优点:智能等待,作用于全局

3.显式等待

显式等待也是智能等待,在指定超时时间范围内只要满足操作的条件就会继续执行后续代码。

new WebDriverWait(driver,Duration.ofSeconds(3)).until($express)
WebDriverWait foo = new WebDriverWait(driver,Duration.ofSeconds(3))
foo.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#id")));

优点:智能等待,可以自定义显示等待的条件,操作灵活

缺点:写法复杂

4.显式等待和隐式等待混用

二者混用,可能会导致不可预测的等待时间


五、浏览器导航

1.打开网站

//方法一
driver.navigate().to("https://selenium.dev");
//方法二
driver.get("https://selenium.dev");

2.浏览器的前进、后退、刷新

driver.navigate().back();
driver.navigate().forward();
driver.navigate().refresh();

六、弹窗

弹窗在页面找不到任何元素,那我们该如何处理这种情况呢?

可以使用Selenium提供的Alert接口

1.警告弹窗 + 确认弹窗

Alert alert = driver.switchTo.alert();
//确认
alert.accept()
//取消
alert.dismiss()

2.提示弹窗

Alert alert = driver.switchTo.alert();
alert.sendKeys("hello");
alert.accept();
alert.dismiss();

七、文件上传

点击文件上传的场景下会弹出系统窗口,进行文件的选择。

Selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素,

但是可以使用sendkeys来上传指定路径的文件,达到的效果是一样的。

WebElement ele = driver.findElement(By.cssSelector("body > div > div > 
input[type=file]"));
ele.sendKeys("D:\\selenium2html\\selenium2html\\upload.html");

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词