自动化测试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("百度一下")?"测试通过":"测试不通过");
}
相关推荐
美团测试工程师4 小时前
Postman接口测试工具使用详解
测试工具·postman
测试杂货铺7 小时前
如何用postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·测试工具·职场和发展·jenkins·压力测试·postman
一二小选手7 小时前
Postman接口测试工具
java·测试工具·postman
测试老哥11 小时前
Jmeter测试脚本编写技巧
自动化测试·软件测试·功能测试·测试工具·jmeter·职场和发展·性能测试
爱学测试的李木子12 小时前
从0到1搭建 Android 自动化 python+appium 环境
android·软件测试·python·测试工具·自动化
霍格沃兹测试开发学社测试人社区15 小时前
软件测试丨性能测试工具-JMeter
软件测试·测试开发·测试工具·jmeter·性能测试
小张认为的测试16 小时前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
美团测试工程师1 天前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
小白学大数据1 天前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
weixin_419349791 天前
selenium 报错 invalid argument: invalid locator
selenium·测试工具