首页 > 编程学习 > 自动化测试selenium(一)

自动化测试selenium(一)

发布时间:2022/11/7 1:41:57

文章目录

  • 一、自动化测试初识
    • 1.什么是自动化测试?
    • 2.Selenium初识
    • 3.什么是驱动
  • 二、Selenium基础语法
    • 1.一个简单的自动化脚本分析
    • 2. 元素的定位
      • 2.1.css选择器
      • 2.2.Xpath选择器
      • 2.3.id 和name 定位
    • 3. 元素的操作
      • 3.1.点击与提交
      • 3.2.模拟按键输入send_keys
      • 3.3.清空clear()
      • 3.4.获取文本 getText()
    • 4.等待
  • 三、最后的话

一、自动化测试初识

1.什么是自动化测试?

自动化测试指的是软件测试的自动化,在预设状态下运行应用程序或系统,预设的条件包括正常和异常条件,最后评估结果。将人为驱动的测试行为转化为机器执行的过程。

实际上,我们的自动化测试只能代替一部分的手工测试。因为随着软件功能的增加,版本越来越多,版本回归的压力也越来越大,所以仅仅通过人工测试来回归所有的的版本肯定是不现实的,因此我们需要借助自动化来进行回归测试。

因此说,我们的自动化测试是一个提高测试效率的工具。

2.Selenium初识

selenium是一个web的自动化测试工具,具有以下优点:

  • 开源免费
  • 支持多浏览器,如chrome,Firefox,IE,edge…
  • 支持多系统,如Linux、Windows、MacOS…
  • 支持多语言,如Java、python…
  • selenium底层有很多可使用的API

3.什么是驱动

简单来说驱动就是使某个东西运行起来的东西或操作,汽车的驱动让汽车动起来,计算机里面的驱动可以让计算机和设备工作起来。

同理,我们打开浏览器也需要驱动,在人工测试的情况下,我们是人工驱动去打开浏览器,但在自动化的情况下,我们通过代码来驱动程序打开浏览器。

自动化测试selenium、 驱动、浏览器三者关系如下图:

在这里插入图片描述
代码发送请求——>驱动接受请求——>驱动解析请求


二、Selenium基础语法

1.一个简单的自动化脚本分析

    //一个简单的自动化示例
    public void dilireba_test() throws InterruptedException {
    //选择驱动的浏览器,这里用到的是Chrome
        ChromeDriver driver = new ChromeDriver();
        Thread.sleep(2000);
        //输入百度网址
        driver.get("https://www.baidu.com");
        Thread.sleep(2000);
        //找到百度输入框,并输入关键字
   //一个控件有若干属性id 、name、(也可以用其它方式定位),百度输入框的id 叫kw     driver.findElement(By.cssSelector("#kw")).sendKeys("努力学习");
        Thread.sleep(2000);
        //找到百度一下按钮,并点击
        
//搜索的按钮的id 叫su ,我需要点一下按钮( click() )        
		driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(2000);
        //释放掉驱动对象,关闭浏览器
        driver.quit();
    }

2. 元素的定位

跟送外卖一样,我们需要定位到顾客的地址,外卖员才能准确地将外卖送到顾客手中。 对象的定位是自动化测试的核心。要想操作一个对象,必须首先定位到这个对象。

定位的时候,需要保证属性的唯一性,这样才能准确定位

webdriver常用的定位方法有以下几种:

  1. css选择器
  2. 基础选择器
  3. id、选择器
  4. 复合选择器
  5. xpath选择器

2.1.css选择器

    public void location_Text() throws InterruptedException {
        //css选择器
        //通过css选择器定位到输入框,并且输入堂吉诃德
        driver.findElement(By.cssSelector("#kw")).sendKeys("堂吉诃德");
        //等待3s
        Thread.sleep(3000);
        //通过css选择器定位到百度一下按钮,并且进行点击操作
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(3000);
    }

在这里插入图片描述


2.2.Xpath选择器

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 ——百度百科

XPATH的获取可以用chrome的F12开发者模式中Element-右键-copy-copy xpath来获取
在这里插入图片描述

//xpath选择器定位
        driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("堂吉诃德");
        Thread.sleep(3000);
        driver.findElement(By.xpath("//*[@id=\"su\"]")).click();
        Thread.sleep(3000);

注意,定位元素的属性一定要唯一,不然可能会出错


2.3.id 和name 定位

id 和name 是我们最最常用的定位方式,因为大多数控件都有这两个属性,而且在对控件的id 和name 命名时一般使其有意义也会取不同的名字。通过这两个属性使我们找一个页面上的属性变得相当容易。

//id定位
        driver.findElement(By.id("kw")).sendKeys("堂吉诃德");
        Thread.sleep(3000);
        driver.findElement(By.id("su")).click();
        Thread.sleep(3000);

元素的定位简单介绍以上几种。


3. 元素的操作

3.1.点击与提交

click和submit都可以操作按钮。可以click不一定可以submit但是页面的任何元素都可以click。selenium官方文档里不建议使用submit

在这里插入图片描述

3.2.模拟按键输入send_keys

在这里插入图片描述

3.3.清空clear()

在这里插入图片描述

3.4.获取文本 getText()

在这里插入图片描述
【注意】不是页面上可以看见的文字都能成为文本,有的文本是属性对应的属性值,不能够通过getText()来获取文本。

获取属性值:使用getAttribute (方法来获取属性值

在这里插入图片描述


4.等待

selenium中的等待有3类:强制等待、隐式等待、显式等待

(1)强制等待:让程序暂停一会,等待指定时间之后继续执行下一步。

在这里插入图片描述

优点:语法简单,适合调试的时候用。
缺点:需要等待固定的时间,造成测试时间的大量消耗。大大的减少了自动化的测试效率。

(2)隐式等待:在规定的时间范围内,轮询等待元素出现之后就立即结束,如果在规定的时间内元素仍然没有出现,则会抛出一个NoSuchElementException异常。

在这里插入图片描述

隐式等待作用在webdriver整个生命周期。只要没有走driver.quit即没有退出浏览器,隐式等待都是一直存在的。

优点:节省了大量的等待时间,元素展示之后就可以直接执行下一步,执行效率高。

缺点:需要等待所有的元素都展现才会执行下一步,仍然会有额外的时间上的浪费

(3)强制等待:强制等待可以针对某一个元素来进行测试。
在这里插入图片描述
在这里插入图片描述
优点:针对某一个元素来进行等待,极大降低了自动化整体的等待时间。

缺点:写法更为复杂。

强制等待可以使用selenium里的一个类,类里提供了很多方法可以用来测试。下面两个是比较常用的:

  1. presenceOfElementLocated:检查页面是否存在对应的元素
  2. textToBe:检查页面元素对应的文本信息是否正确

在这里插入图片描述


三、最后的话

好久没更博客,一方面是自己在准备秋招,一方面是因为在实习,时间匆匆忙忙,闲暇时间都用来放松了,前段时间真的是有点小累,现在开始慢慢调整过来,加油!

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式