今天,我们开始介绍基于开源Selenium工具的Web网站自动化测试。
Selenium包含了3大组件,分别为:
1. Selenium IDE
基于Chrome和Firefox扩展的集成开发环境,可以录制、回放和导出不同语言的测试脚本。
2. WebDriver
包括一组为不同语言、浏览器提供的类库和驱动,用编程的方式来识别和操作网页及其元素。
3. Selenium Grid
提供主从架构的、分布式测试执行环境,由Hub(主控)和Node(节点)组成。
老版本的Selenium还包括一个已经被废弃的RC组件,它的原理是通过代理的方式向被测试的网页中注入JavaScript代码,完成对页面的操控。当前,RC已被WebDriver组件所替代。大家如在网上看到于此有关的文章,可直接忽略。
使用Selenium IDE录制自动化测试脚本
- 首先安装Chrome浏览器,然后从这里安装Selenium IDE插件;
- 点击浏览器右上角的扩展图标(类似1个拼图的符号),选择打开Selenium IDE;
- 在弹出的窗口中,点击Record a new test in a new project菜单项;
- 输入项目名称(如project1),点击确定;
- 在BASE URL文本框中,输入百度网址https://www.baidu.com;
- 点击Start Recording,开始录制脚本;
- 在弹出的百度网站窗口中,完成以下操作:
7.1. 在关键字文本框中,输入禅道;
7.2. 点击搜索按钮;
7.3. 在搜索结果中,点击第1条的标题。 - 切换到录制工具窗口,点击右上角红色图标,停止录制;
- 输入脚本名称(如script1),进入以下编辑器窗口:
- 点击脚本名称(如script1)右侧的更多图标(为纵向排列的3个点),选择Export菜单项;
- 此处我们以内嵌Java注释的方式,对脚本做简单的介绍。生成的脚本如下,已忽略其中用于等待窗口的waitForWindow方法和调用。
// 导入Java类库,如selenium、junit等
import org.openqa.selenium.WebDriver;
// 生成的JUnit测试类
public class Test1Test {
// 类级别的私有变量
private WebDriver driver;
private Map<String, Object> vars;
JavascriptExecutor js;
// 使用JUnit的@Before注解,定义在测试执行前,需执行的初始化行为。
@Before
public void setUp() {
// 初始化WebDriver对象
driver = new ChromeDriver();
// 初始化JS执行器对象,用于在浏览器中执行Javascript代码。
js = (JavascriptExecutor) driver;
}
// 使用JUnit的@After注解,定义在测试完成后,需执行的清理动作。
@After
public void tearDown() {
// 退出并清理WebDriver对象
driver.quit();
}
// 使用JUnit的@Test注解,标注此方法为一个测试方法。
@Test
public void test1() {
// 打开百度网站首页
driver.get("https://www.baidu.com/");
// 设置浏览器窗口大小为1440x875
driver.manage().window().setSize(new Dimension(1440, 875));
// 找到id为kw的(文本框)控件,在里面输入“禅道”。
driver.findElement(By.id("kw")).sendKeys("禅道");
// 找到id为su的(按钮)控件,并点击。
driver.findElement(By.id("su")).click();
// 找到指定内容的链接,并点击。
driver.findElement(By.ByPartialLinkText("开源项目管理软件")).click();
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。