今天,我们开始介绍基于开源Selenium工具的Web网站自动化测试。

Selenium包含了3大组件,分别为:
1. Selenium IDE
基于Chrome和Firefox扩展的集成开发环境,可以录制、回放和导出不同语言的测试脚本。

2. WebDriver
包括一组为不同语言、浏览器提供的类库和驱动,用编程的方式来识别和操作网页及其元素。

3. Selenium Grid
提供主从架构的、分布式测试执行环境,由Hub(主控)和Node(节点)组成。

老版本的Selenium还包括一个已经被废弃的RC组件,它的原理是通过代理的方式向被测试的网页中注入JavaScript代码,完成对页面的操控。当前,RC已被WebDriver组件所替代。大家如在网上看到于此有关的文章,可直接忽略。

使用Selenium IDE录制自动化测试脚本

  1. 首先安装Chrome浏览器,然后从这里安装Selenium IDE插件;
  2. 点击浏览器右上角的扩展图标(类似1个拼图的符号),选择打开Selenium IDE;
  3. 在弹出的窗口中,点击Record a new test in a new project菜单项;
  4. 输入项目名称(如project1),点击确定;
  5. 在BASE URL文本框中,输入百度网址https://www.baidu.com
  6. 点击Start Recording,开始录制脚本;
  7. 在弹出的百度网站窗口中,完成以下操作:
    7.1. 在关键字文本框中,输入禅道
    7.2. 点击搜索按钮;
    7.3. 在搜索结果中,点击第1条的标题。
  8. 切换到录制工具窗口,点击右上角红色图标,停止录制;
  9. 输入脚本名称(如script1),进入以下编辑器窗口:
    image.png
  10. 点击脚本名称(如script1)右侧的更多图标(为纵向排列的3个点),选择Export菜单项;
  11. 此处我们以内嵌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();
  }

}

专题目录


陈哥聊测试
158 声望3.3k 粉丝

资深敏捷测试顾问,国内知名项目管理软件禅道团队成员。