自动化测试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("百度一下")?"测试通过":"测试不通过");
}
相关推荐
niuniu_6669 小时前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试
suimeng61 天前
ChromeDriver的常用方法
java·selenium
niuniu_6661 天前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
莓事哒1 天前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
suimeng61 天前
基本元素定位(findElement方法)
java·selenium
mywpython1 天前
mac 最新的chrome版本配置selenium的方式
chrome·python·selenium·macos
软件测试曦曦1 天前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
freejackman1 天前
Selenium框架——Web自动化测试
python·selenium·测试
互联网杂货铺1 天前
黑盒测试、白盒测试、集成测试和系统测试的区别与联系
自动化测试·软件测试·python·功能测试·测试工具·单元测试·集成测试
Feng.Lee2 天前
聊一聊缓存如何进行测试
功能测试·测试工具·缓存