GUI自动化测试

一、Selenium 2.0 的实现原理

Selenium 2.0,又称 Selenium WebDriver,它利用的原理是:使用浏览器原生的 WebDriver 实现页面操作。

Selenium WebDriver 是典型的 Server-Client 模式,Server 端就是 Remote Server。以下是 Selenium 2.0 工作原理的解析。

GUI自动化测试_第1张图片
Selenium WebDriver 的执行流程.png

1、当使用 Selenium2.0 启动浏览器 Web Browser 时,后台会同时启动基于 WebDriver Wire 协议的 Web Service 作为 Selenium 的 Remote Server,并将其与浏览器绑定。绑定完成后,Remote Server 就开始监听 Client 端的操作请求。

2、执行测试时,测试用例会作为 Client 端,将需要执行的页面操作请求以 Http Request 的方式发送给 Remote Server。该 HTTP Request 的 body,是以 WebDriver Wire 协议规定的 JSON 格式来描述需要浏览器执行的具体操作。

3、Remote Server 接收到请求后,会对请求进行解析,并将解析结果发给 WebDriver,由 WebDriver 实际执行浏览器的操作。

4、WebDriver 可以看做是直接操作浏览器的原生组件(Native Component),所以搭建测试环境时,通常都需要先下载浏览器对应的 WebDriver。

二、构建一个 Selenium 自动化测试用例示例

访问百度主页,搜索某个关键词,并验证搜索结果页面的标题是“被搜索的关键词”+“_ 百度搜索”。

GUI自动化测试_第2张图片
image.png

案例中用到了Chrome 浏览器,所以需要先下载 Chrome Driver (与chrome浏览器版本需要兼容)并将其放入环境变量。接下来,建立一个空的 Maven 项目,然后在 POM 文件中加入 Selenium 2.0 的依赖,如图 1所示

GUI自动化测试_第3张图片
在 POM 文件中加入 Selenium 2.0 的依赖.png

代码实现如下:

import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class Python_Search {
    public static void main(String[] args) throws InterruptedException{
        //创建Chrome
        WebDriver driver = new ChromeDriver();
        //打开百度首页
        driver.navigate().to("https://www.baidu.com");
        //通过name属性找到搜索输入框
        WebElement search_input = driver.findElement(By.name("wd"));
        //输入关键字“python”
        search_input.sendKeys("python");
        //提交搜索请求
        search_input.submit();
        //等待3秒
        Thread.sleep(3000);
        //验证搜索结果页面的标题
        Assert.assertEquals("python_百度搜索", driver.getTitle());
        //关闭浏览器窗口
        driver.quit();
    }
}
GUI自动化测试_第4张图片
查找搜索输入框.png

补充说明:别忘了下载第三方驱动哦,selenium必须要依赖浏览器才能跑起来
selenium jar包可以去selenium官网下载

你可能感兴趣的:(GUI自动化测试)