GUI自动化测试
一、Selenium 2.0 的实现原理
Selenium 2.0,又称 Selenium WebDriver,它利用的原理是:使用浏览器原生的 WebDriver 实现页面操作。
Selenium WebDriver 是典型的 Server-Client 模式,Server 端就是 Remote Server。以下是 Selenium 2.0 工作原理的解析。
Selenium WebDriver 的执行流程.png1、当使用 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 自动化测试用例示例
访问百度主页,搜索某个关键词,并验证搜索结果页面的标题是“被搜索的关键词”+“_ 百度搜索”。
image.png案例中用到了Chrome 浏览器,所以需要先下载 Chrome Driver (与chrome浏览器版本需要兼容)并将其放入环境变量。接下来,建立一个空的 Maven 项目,然后在 POM 文件中加入 Selenium 2.0 的依赖,如图 1所示
在 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();
}
}
查找搜索输入框.png
补充说明:别忘了下载第三方驱动哦,selenium必须要依赖浏览器才能跑起来
selenium jar包可以去selenium官网下载