第一个 GUI 自动化测试 @ Selenium 自动化测试用例示例

一. 测试工程

1. 测试需求:访问百度主页,搜索某个关键词,并验证搜索结果页面的标题。

2. 手工操作验证步骤:

1. 打开 Chrome 浏览器,输入百度的网址“www.baidu.com";
2. 在搜索输入框中输入关键词“VS Code”并按下回车键;
3. 验证搜索结果页面的标题是否是“VS Code_百度搜索”。

3. Java代码实现步骤:

1. 因为用到 Chrome 浏览器,所以需要先下载 Chrome Driver 并将其放到浏览器安装目录;
2. 建立一个空的 Maven 项目,然后再 POM 文件中加入 Selenium 的依赖,代码如下:

<dependency>
    <groupId>org.seleniumhq.seleniumgroupId>
    <artifactId>selenium-javaartifactId>
    <version>2.53.1version>
dependency>
3. 接着写一个测试方法,代码如下所示:
@Test
public void contextLoads() throws InterruptedException {

    // 注入驱动
    System.setProperty("webdriver.chrome.driver",
            "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");

    // 创建 Chrome driver 的实例
    WebDriver driver = new ChromeDriver();

    // 打开百度首页
    driver.navigate().to("https://www.baidu.com/");

    // 通过 name 属性找到搜索输入框
    WebElement search_input = driver.findElement(By.name("wd"));

    // 在搜索输入框中输入搜索关键字“VS Code”
    search_input.sendKeys("VS Code");

    // 递交搜索请求
    search_input.submit();

    // 等待固定时间 5 秒
    Thread.sleep(5000);

    // 验证搜素结果页面的标题
    // Assert.assertEquals("VS Code_百度搜索", driver.getTitle());
    System.out.println("Title is :" + driver.getTitle());

    // 关闭浏览器窗口
    driver.quit();

}
运行测试类,看看会执行的操作
1. 这段代码会自动在你的电脑上打开 Chrome 浏览器;
2. 在 URL 栏自动输入 「https://www.baidu.com/」;
3. 百度主页打开后,在输入框自动输入 「VS Code」并执行搜索;
4. 返回搜索结果页面;
5. Chrome 浏览器自动退出。

二. Selenium 的实现原理

1. Selenium 1.0 的工作原理
    Selenium 1.0,又称 Selenium RC,其中 RC 是 Remote Control 的缩写。Selenium RC 利用的原理是:JavaScript 代码可以很方便地获取页面上的任何元素并执行各种操作。

    但是因为 「同源政策(Same-origin policy)」(只有来自相同域名、端口和协议的 JavaScript 代码才能被浏览器执行),所以要想在测试用例运行中的浏览器中,注入 JavaScript 代码从而实现自动化的 Web 操作,Selenium RC 就必须 「欺骗」被测站点,让它误以为被注入的代码是同源的。

    通过引入 Selenium RC Server 实现,其中的 Http Proxy 模块就是来「欺骗」浏览器的。另一部分就是 Client Libraries。他们的具体关系如下图所示:

第一个 GUI 自动化测试 @ Selenium 自动化测试用例示例_第1张图片

2. Selenium 2.0 的工作原理
    Selenium 2.0,又称 Selenium WebDriver,其原理是:使用浏览器原生的 WebDriver 实现页面操作。实现方式完全不同于 Selenium 1.0。

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

第一个 GUI 自动化测试 @ Selenium 自动化测试用例示例_第2张图片

    1. 当使用 Selenium 2.0 启动浏览器时,后台会同时启动基于 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,测试,自动化)