自动化测试

1. 什么是自动化

1.1 自动化概念

自动化就是解放测试人员双手,测试工作由代码代替人工执行测试工作。

自动化不能完全代替手工测试。

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

1.2 自动化分类

自动化测试_第1张图片

UI测试:

  • 测试对象:前端页面
  • 工具:Selenium、Airtest、Appium.....

接口测试:

  • 测试对象:后端测试
  • 工具:postman、Jmeter、request+unittest(python)、HttpClient+Junit(java)....

单元测试:

  • 测试对象:一个一个的方法
  • 工具:Junit & TestNG(java)、Unittest & pytest(python)......

金字塔从下至上特点:

  • 越往上越接近用户
  • 越往上定位问题的成本越高

1.3 自动化好处

  • 提高测试效率
  • 一定程度上保障软件质量

2. Selenium

2.1 什么是Selenium

Selenium是一个用来测试web前端的一个自动化框架

2.2 特点

  • 开源的,可以查看源码
  • 支持多语言:Java、Python、C#、Ruby
  • 支持多种浏览器:Chrome、Edge、Opera...
  • 有丰富的API

3. Selenium原理

自动化测试_第2张图片

1. 三个角色

(1)自动化脚本代码:编写的自动化测试用例(代码)

(2)webdriver浏览器驱动:可执行程序

(3)浏览器:Chrome、Edge、Opera...

2. 三个角色之间的关系

  • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriverremote server
  • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP requestbody中,会以WebDriver Wire协议规定的JSON式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
  • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

4. Selenium API

1. 验证环境搭建是否成功

2. 如何打开网页、如何关闭浏览器

3. 定位元素

CSS选择器定位

  • 通过id选择器定位  #kw
  • class选择器定位   .s_ipt
  • 标签选择器定位元素   标签值
  • 父级子级定位元素        form>span>input:nth-child(2)    

xpath定位

(1)绝对路径定位:/html/body/div[1]

(2)相对路径定位://

  • 相对路径+索引 //form/div[1]/div[1]/input
  • 相对路径+属性 //input[@id="username"]
  • 相对路径+通配符  //*[@*="username"]
  • 相对路径+文本  //h3[text()=""登录]

xpath定位元素的效率没有css选择器定位元素的效率高

4. 操作测试对象

webdriver中比较常用的操作对象的方法有下面几个:

  • click点击对象
  • send_keys 在对象上模拟按键输入
  • clear 清除对象输入的文本内容
  • submit 提交
  • text 用于获取元素的文本信息
private static void test() throws InterruptedException{
    //创建一个浏览器驱动
    WebDriver webdriver=new ChromDriver();
    //打开百度首页
    webDriver.get("https://ww.baidu .com");
    //输入“软件测试”
    webDriver.findElement(By.cssSelector("#kw")).sendKeys("冲刺班");
    //清除输入信息(“软件测试”)
    webDriver.findElement(By.cssselector("#kw")).clear();
    //获取输入框输入信息
    String result_string=webDriver.findElement(By.cssselector("#kw")).getText();
    //若输入信息为空
    if(result_string.equals(""))
    {
    //测试通过
        System.out.println("测试通过");
    }else{
    //反之不通过
        System.out.println("测试不通过");
    }

    sleep(1000);
    webDriver.quit();
}

submit和click之间的区别

  • submit操作元素必须放在form标签下
  • click对标签没有要求

5. 添加等待 

(1)强制等待        sleep(5000);  //休眠5秒

(2)智能等待        找到元素之后就会进行退出,此处的时间是最大等待时长

webDriver.manage().timeouts().implictlyWait(Duration.ofSeconds(10));  //等待10秒

6. 打印信息

7. 浏览器操作

(1)浏览器最大化

private static void test08() throws InterruptedException{
    webDriver webDriver = new ChromeDriver();
    webDriver.get("https://www.baidu.com/L");sleep(millis:3000);
    webDriver.manage().window().maximize();
    webDriver.manage().window().fullscreen();sleep(millis:3000);
    webDriver.quit();
}

(2)浏览器滚动

  • #浏览器的前进  browser.forward()
  • #浏览器的后退  browser.back()
  • # 将浏览器滚动条滑到最顶端 document.documentElement.scrollTop=0
  • #将浏览器滚动条滑到最底端 document.documentElement.scrollTop=10000
    示例 js="var q=document.documentElement.scrollTop=10000" driver.execute_script(js) execute_script(script, *args) ,在当前窗口 / 框架同步执行 javaScript

8. 键盘事件

9. 鼠标事件

举例:对百度界面进行测试,打开新闻标签,切换窗口,输出“热点要闻”这几个字。

自动化测试_第3张图片

 

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