自动化测试selenium(1)

自动化测试selenium

  • 自动化测试selenium
    • 自动化测试
      • selenium定位元素
    • 实战测试百度搜索
      • 安装测试环境
        • Idea中进行自动化脚本编写
          • 打开网页:
          • 实现搜索功能:
          • 浏览器清空效果`clear()`:
          • 获取元素名称

自动化测试selenium

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

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

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

两类测试的应用领域:

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

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

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

自动化测试

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

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

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

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

自动化测试selenium(1)_第1张图片

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

selenium定位元素

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

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

在网页上的操作:

自动化测试selenium(1)_第2张图片

自动化测试selenium(1)_第3张图片

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下载链接

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

自动化测试selenium(1)_第4张图片

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

chromeDirver下载地址

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

自动化测试selenium(1)_第5张图片

自动化测试selenium(1)_第6张图片

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

自动化测试selenium(1)_第7张图片

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

自动化测试selenium(1)_第8张图片

Idea中进行自动化脚本编写

首先需要创建一个maven项目

自动化测试selenium(1)_第9张图片

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

<dependency>
    <groupId>org.seleniumhq.seleniumgroupId>
    <artifactId>selenium-javaartifactId>
    <version>3.141.59version>
dependency>

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

打开网页:
//这段代码的主要功能是确认浏览器和输入浏览器打开的网页
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");
}
实现搜索功能:

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

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()
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();
}
获取元素名称
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("百度一下")?"测试通过":"测试不通过");
}

在这里插入图片描述

你可能感兴趣的:(selenium,测试工具)