自动化测试selenium(1)

自动化测试📪selenium

自动化测试📪selenium

测试是一个软件或者程序运行的保障,想要一个程序得到预期效果不可避免地会进行一些测试,常见的测试有很多,比如:黑盒测试,白盒测试,灰盒测试,单元测试,回归测试等等,这些测试都是对于代码方向上的分类标准,而对于代码的运行模式又分为两种模式。

  1. 手工测试
  2. 自动化测试

这两类测试的区别相信自己从字眼中可以看出区别。

两类测试的应用领域:

手工测试:不经常使用到的一些功能

自动化测试:操作重复性高的功能

接下来主要介绍自动化测试中的selenium的使用。

自动化测试📑

自动化测试中会经常使用到自动化测试框架,而selenium是用于对web自动化测试的一个框架,其作用范围广泛原因就是selenium的特点。

  1. 支持各种浏览器
  2. 支持各种系统平台
  3. 支持各种计算机语言
  4. 有非常丰富的API

要认识selenium首先要认识其工作原理,才可以更加正确的认识和使用。

自动化脚本 ----> 浏览器驱动 -----> 浏览器

那么具体是如何实现一个自动化脚本呢?

selenium定位元素📍

selenium定位元素常用的两种方法:

  1. CSS选择器
  2. Xpath选择器

在网页上的操作:

copy element: 拷贝这一个元素中所有内容

copy outerHTML:拷贝这一条HTML语句

copy selector : css选择器

copy JS path: 拷贝js路径

copy styles : 拷贝样式

copy Xpath :拷贝相对路径

copy full Xpath : 拷贝绝对路径

CSS选择器使用的是CSS语法进行元素定位,常见的有以下几种:

  • id选择器
  • 类选择器
  • 后代选择器
  • 标签选择器
  • ......

而对于Xpath选择器有以下两种:

  • 相对路径【以//开始】
  • 绝对路径

针对相对路径绝对路径 ,推荐使用相对路径,原因是相对路径效率高,因为效率高,所以也经常使用,对于绝对路径来说,效率低,想要查找一个元素时要从底层目录开始查找,不太可观。

而相对路径中又被细分为四种匹配模式:

  1. 相对路径 + 索引(下标)匹配

    例如://from/span[1]/input意思是定位到from标签中第一个span标签中的input标签

  2. 相对路径 + 属性值

    例如://input[class='s_ipt']意思是定位到一个input标签使用了s_ipt

  3. 相对路径 + 通配符

    例如://*[@*='su']定位到所有使用了su的元素

  4. 相对路径 + 文本匹配

    例如://a[text = '新闻]定位到a标签中文本内容为"新闻"的元素

两个选择器的对比CSS选择器的效率更高。

实战测试百度搜索🔍

安装测试环境

测试浏览器:chrome

使用语言:Java

首先安装一个chrome浏览器:

chrome下载链接

安装之后查看浏览器版本:

再根据浏览器版本下载一个chromeDriver.

chromeDirver下载地址

根据电脑的系统选择相对的版本:

下载之后解压,然后配置Java的环境变量(已经配置可以略过):

将解压后的文件加入配置好的jdkbin目录下:

Idea中进行自动化脚本编写

首先需要创建一个maven项目

pom.xml中添加包并刷新maven仓库。

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

创建一个Main.class文件。在Main中创建一个main函数直接调用方法即可。

打开网页:
java 复制代码
//这段代码的主要功能是确认浏览器和输入浏览器打开的网页
public static void test01()throws InterruptedException {
    //支持的浏览器启动
    ChromeOptions options = new ChromeOptions();
    //允许读取所有请求
    options.addArguments("--remote-allow-origins=*");
    //注册驱动
    WebDriver webDriver = new ChromeDriver(options);
    //打开百度首页
    webDriver.get("https://www.baidu.com");
}
实现搜索功能:

有预期结果和实际结果之间的对比打印

java 复制代码
public static void test01()throws InterruptedException {
    ChromeOptions options = new ChromeOptions();
    //允许读取所有请求
    options.addArguments("--remote-allow-origins=*");
    WebDriver webDriver = new ChromeDriver(options);
    //打开百度首页
    webDriver.get("https://www.baidu.com");
    //使用css选择器来寻找
    //        WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));
    //使用xpath选择器来寻找
    WebElement element = webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
    //输入软件测试
    element.sendKeys("软件测试");
    //找到百度搜索然后进行点击操作
    webDriver.findElement(By.cssSelector("#su")).click();
    //为了观察效果,强制休眠 3 秒
    sleep(3000);
    //校验
    //找到搜索结果
    List<WebElement> elements = webDriver.findElements(By.cssSelector("a em"));
    for (int i = 0; i < elements.size(); i++) {
        System.out.println(elements.get(i).getText());
        //如果返回结果包含软件测试,证明测试通过,直接结束本次搜索测试
        if(elements.get(i).getText().contains("软件测试")){
            System.out.println("测试通过");
            return;
        }
    }
    //如果不通过就不会退出函数,而会打印这个内容
    System.out.println("测试不通过");
}
浏览器清空效果clear()
java 复制代码
public static void test02() throws InterruptedException {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--remote-allow-origins=*");
    WebDriver webDriver = new ChromeDriver(options);
    webDriver.get("https://www.baidu.com");
    webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
    //点击
    webDriver.findElement(By.cssSelector("#su")).click();
    sleep(2000);
    //清空搜索框
    webDriver.findElement(By.cssSelector("#kw")).clear();
    //重新填写搜索词    
	webDriver.findElement(By.cssSelector("#kw")).sendKeys("前端Vue");
    //点击
    webDriver.findElement(By.cssSelector("#su")).click();
}
获取元素名称
java 复制代码
private static void test04() {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--remote-allow-origins=*");
    WebDriver webDriver = new ChromeDriver(options);
    webDriver.get("https://www.baidu.com/");
    //获取元素中'value'的值
    String text = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
    System.out.println(text.equals("百度一下")?"测试通过":"测试不通过");
}
相关推荐
弹简特26 分钟前
【精通Postman接口测试】01-基础理论+安装使用+项目实战+接口关联(万字图文,零基础保姆级)
测试工具·postman·接口关联
武帝为此15 小时前
【Selenium 屏幕截图】
python·selenium·测试工具
武帝为此1 天前
【Selenium 执行 JavaScript】
javascript·selenium·测试工具
llilian_161 天前
晶体频率测试仪 破解晶振品控核心难题:晶体频率网络测试仪深度解析 晶体网络分析仪
网络·功能测试·单片机·嵌入式硬件·测试工具·51单片机
深念Y1 天前
从 Playwright/Selenium 到指纹浏览器:浏览器自动化技术的进阶之路
selenium·测试工具·自动化·浏览器·账号·无头浏览器·指纹浏览器
Johnstons1 天前
Wireshark ExpertInfo是什么?一文讲透异常分级、适用场景、和传统抓包阅读的区别与排查标准
网络·测试工具·wireshark·es
我的xiaodoujiao1 天前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
我的xiaodoujiao2 天前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
LT10157974442 天前
2026年低代码自动化测试平台选型指南:降低测试落地门槛
测试工具·低代码·自动化
llilian_162 天前
晶振测量仪 晶振频率测试仪器的多领域应用解析 晶振频率测试仪器
功能测试·单片机·嵌入式硬件·测试工具·51单片机