0
点赞
收藏
分享

微信扫一扫

选择华为HCIE培训机构有哪些注意事项

程序小小黑 03-30 10:30 阅读 1

目录


欢迎阅读本文,今天我将分享如何使用Selenium和Java语言来进行Web应用程序的自动化测试。Selenium是一个强大的工具,它可以模拟用户在Web浏览器中的操作,从而实现自动化测试。

关于自动化测试

首先,我们来先介绍一下什么是自动化测试:

自动化测试主要关注以下层面:在这里插入图片描述
Web UI自动化测试框架Selenium关注的是UI界面,其更贴近用户和
软件系统的实际业务。

selenium工作机制

在这里插入图片描述

底层使用JavaScript模拟真实用户对浏览器进行操作。

selenium的使用

一个简单自动化脚本包括以下六个方面:

  1. 创建驱动实例
  2. 打开网页
  3. 定位元素
  4. 操作元素
  5. 验证结果
  6. 结束会话
使用java编写一个简单脚本:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SimpleTest {
    public static void main(String[] args) {

        // 初始化WebDriver
        WebDriver driver = new ChromeDriver();

        // 导航到网页
        driver.get("https://www.example.com");

        // 在这里添加代码来定位元素、执行操作和验证结果
        ...

        // 清理,关闭浏览器
        driver.quit();
    }
}

selenium中常用API

定位元素

元素的定位,是自动化测试中的核心,要想操作一个对象,首先要在网页中找到这个对象。selenium中定位元素统一用到的API为:

WebElement element = findElement(...);  //定位一个元素
WebElement element = findElements(...); //定位一组元素

提供了几种定位元素的常用方法,下面将逐一介绍。

按id定位

driver.findElement(By.id(id名称));

按名称定位

driver.findElement(By.name(name名称));

按类名定位

driver.findElement(By.className(类名));

按标签名定位

driver.findElement(By.tagName(标签名));

按CSS选择器定位

driver.findElement(By.cssSelector(css选择器路径));

css选择是一种语法,可以通过四种选择器来实现:

按XPath定位

driver.findElement(By.xpath(xpath路径));

xpath也是一种语法,下面简单介绍以下它的原理

示例

举个例子,对于定位百度搜索框这个元素,我们有以下几种定位方式:

driver.findElement(By.id("kw"));
driver.findElement(By.name("wd"));
driver.findElement(By.className("s_ipt"));
driver.findElement(By.tagName("input"));
driver.findElement(By.cssSelector("#kw"));
driver.findElement(By.xpath("//*[@id='kw']"));

关于如何快速定位元素,不用我们自己编写css选择器语句或者xpath语句,直接在被测试网页中按F12 或者 右击鼠标进入开发者模式后,选中你要定位的元素,放到对应的代码区域,右击复制路径即可
在这里插入图片描述

操作测试对象

关于click 和 submit 的区别:
如果点击的元素在form标签中,二者效果一致,如果点击的元素放在非form标签中,此时使用submit会报错。一般建议使用click.

等待

sleep休眠

sleep(xxx); xxx为ms数,强制等待

隐式等待

与sleep固定等待时间不同的是,隐式等待方法在一个等待时间范围内结束。在等待时间范围内轮询式查找元素,当超出等待的时间还没找到,再抛出异常。

driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit);
TimeUnit表示时间单位,例如秒(SECONDS)、毫秒(MILLISECONDS)、分钟(MINUTES)等。
driver.manage().timeouts().implicitlyWait(3,SECONDS);
WebDriver 就会在抛出找不到元素的异常之前,最多等待 3 秒钟的时间

显示等待

WebDriverWait wait = new WebDriverWait(driver, timeout);
初始化 WebDriverWait 对象,设置最大等待时间。
wait.until(ExpectedConditions.condition);
等待某个条件成立,可以是元素可见、元素存在、元素可点击等条件。

推荐使用隐式等待。

打印信息

浏览器操作

控制浏览器滚动条

这里滚动条的控制需要依靠js脚本
(JavascriptExecutor)driver.executeScript(...);
...处填写script,以下两种选项可填入:
//将浏览器滚动条滑到最顶端
document.documentElement.scrollTop=0
//将浏览器滚动条滑到最底端
document.documentElement.scrollTop=10000

键盘事件

鼠标事件

首先需要我们新定义一个Actions类

在执行鼠标操作时,必须在动作序列后加上perform执行方法,才能达到效果。即:动作序列+执行方法

actions.doubleClick(element).perform(); //双击
actions.contextClick(element).perform(); //右击
actions.dragAndDrop(source, target).perform(); //拖放操作,一个元素到另一个
actions.moveToElement(element).perform(); //移动操作

切换窗口

有的时候我们浏览器打开了很多窗口,那如何切换到指定窗口呢?
在这里插入图片描述

打开了多个窗口,切换到最后一个窗口中(最新打开的窗口)
String cur_handle=driver.getWindowHandle();
Set<String> all_handles=driver.getWindowHandles();
String target="";
for(String window:all_handles){
	target=window;
}
driver.switchTo().window(target); //切换到最后一个窗口句柄

截图

截图操作,需要引入依赖。

    <!-- ht tps://mvnrepository.com/artifact/commons-io/commons-io -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>

在这里插入图片描述

关闭浏览器

举报

相关推荐

0 条评论