Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,模拟真正的用户在操作一样。支持的浏览器包括 IE、Mozilla Firefox、Mozilla Suite 等。这个工具的主要功能包括:浏览器兼容性测试,系统功能性测试。
Selenium 的组成
Selenium 是一个开源套件,现在存在两个版本 Core、RC。Core 通过 HTML Table 中以三元组(command、Target、Value)的格式编写测试代码,通过 IDE 录制下来的脚本也是三元组的形式。RC(Remote Control)是通过具体的语言来编写测试类。
Core 入门快,三元组简单易懂,且通过 IDE 可以快速录制 bug,方便给相关的研发人员反馈。但是在现实开发中,Selenium 自动化测试脚本还是更多地使用 RC 进行编写,因为使用 RC 编写的 case 可以自成一个工程,若采用面向对象、设计模式等方法进行设计开发,可以具备很强的灵活性和可扩展性。
从例子入门
安装完 RC 后,需要运行 server,server 是模拟用户浏览器行为的服务器,可以分布在不同的机器上。如此我们可以通过一台 master 将任务分配给多台运行 server 的 slaver,这样一方面可以提高测试效率,另一方面可以方便进行浏览器兼容性测试。
通常 Selenium 是配合 JUnit 测试框架进行编写的,下面我们以一个小例子进行说明。
JUint4 可以参考我的另一篇博文 JUnit4 快速入门
public class TestPage{
private Selenium selenium;
@Before
public void setUp() throws Exception{
String testUrl="xxxx";
String serverIp="xxxx";
selenium = new DefaultSelenium(serverIp,SeleniumServer.getDefaultPort(),"*iexplore",testUrl);
selenium.start();
}
@After
public void tearDown() throws Exception{
selenium.stop();
}
@Test
public void test(){
selenium.open("xxx");
selenium.type("xpath=//input[@name='userID']", "testuser");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
}
在 setUp 方法中,我们对 selenium 实例进行初始化,并指定了处理该测试的 server、端口、浏览器类型、被测试的网站 url。
我们重点关注 test 里头的方法,可以很容易看懂,Selenium 模拟了用户在浏览器的动作:输入、点击等,然后通过断言判断网页的响应是否符合预期。
selenium 的命令主要分为三个部分:动作、对象、值(三元组)。
Selenium 常用 action
- open(url)
- type(locator,value):在 locator 指定元素或属性对象输入 value
- click(locator):单击 locator
- clickAndWait(localor):click+wait 的组合
- select(locator,option):选取 locator 指定下拉菜单的 option 选项
- goBack():浏览器后退按钮
- close():浏览器关闭
- select(windowId):选中一个弹出窗口
- Assertions:selenium 提供两种断言方法:Assert 和 Verify,当 Assert 失败时,退出测试;当 Verify 失败时,测试继续。
- assertLocation(pattern)
- verifyLocation(pattern)
locator
- 通过 id 定位元素
- 通过 name 定位第一个该名称的元素
- 通过 dom 表达式:如
dom=document.forms['myForm'].myDropdown
- 通过 xpath 表达式:如
xpath=//img[@alt='The image alt text']
pattern
- exact:string:需要完全匹配当前字符串
- regexp:regexp:支持正则表达式
- glob:pattern:通配符匹配,*表示任意长度字符,?表示任意单个字符。
更多更具体尽在 selenium 官网
当然这里面元素的选取和表达式的书写相关的知识也可以各写一大篇了,这里就不啰嗦,日后再慢慢学习整理。希望通过这篇博客,可以对 selenium 有个大致了解。
学习参考自 51test
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于