1.介绍 Part1:简介
Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制(Selenium
IDE)、编写及运行(Selenium Remote
Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium
Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。
Part2:版本介绍
(1)、SeleniumIDE:一个Firefox的附加组件,结合Firefox可以实现录制测试脚本,并在浏览器中模拟用户真实操作进行回放。而且可以生成一些简单的基于Selenium Remote
Control模式的简单代码。
(2)、Selenium Core:整个测试机制的核心部分,即有assertion(断言)机制的test suite runner。它由一些纯js代码组成,可以运行在windows/linux的不同browser上
Selenium Remote Control:一个代理与控制端,可代替Selenium core/
Selenium IDE的client端(相当于通过编程来实现一切),是支持多语言的。
2.安装
step0:前提,机器上有JDK1.5,eclipse,最好有能跑起来的web工程;
step1:下载地址http://seleniumhq.org/download/ 页面中 Selenuium Client
Drivers下java版本的client 以及Selenium Server
step2:启动 Selenium的server java -jar selenium-server.jar
3.测试
step1:在eclipse中新建一个java web工程,加入junit 和 selenium server 的jar包;
step2:新建java文件代码如下:
package cn.edie;
import org.openqa.selenium.server.SeleniumServer;
import com.thoughtworks.selenium.DefaultSelenium;
import junit.framework.TestCase;
public class Selenium extends TestCase{
private DefaultSelenium
selenium;
private SeleniumServer server;
public void setUp() throws Exception {
String url = "http://www.google.com";
selenium = (DefaultSelenium) new DefaultSelenium("localhost", 4444,"*iexplore", url); //4444 is default
server port
selenium.start();
server = new SeleniumServer();
}
protected void tearDown() throws Exception {
selenium.stop();
server.stop();
}
public void testGoogle() throws Throwable {
selenium.open("http://www.google.com/webhp?hl=en");
assertEquals("Google", selenium.getTitle());
selenium.type("q", "2012");
assertEquals("2012", selenium.getValue("q"));
selenium.click("btnG");
selenium.waitForPageToLoad("5000");
assertEquals("2012 - Google
Search", selenium.getTitle());
}
}
|
step3: 在文件上点右键 run as->junit test 运行弹出浏览器窗口,自动测试。
4.用法:
网上找到的用法。其他介绍:http://liujianguangaaa.blog.163.com/blog/static/3689529420103982551410/
1、测试文本输入框
假设页面上有一个文本输入框,我们要测试的内容是 在其中输入一些内容,然后点击一个按钮,看看页面的是否跳转
到需要的页面。
public void test1() {
selenium.open("http://xxx.xxx.xxx/yyy");
selenium.type("xpath=//input[@name='userID']", "test-user");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
|
上面的代码是这个意思:
1、调用 selenium.open 方法,浏览器会打开相应的页面
2、使用 type 方法来给输入框输入文字
3、等待页面载入
4、看看新的页面标题是不是我们想要的。
2、测试下拉框
java 代码
public void test1() {
selenium.open("http://xxx.xxx.xxx/yyy");
selenium.select("xpath=//SELECT[@name='SBBUSYO']", "index=1");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
|
可以看到,我们可以使用 select 方法来确定选择下拉框中的哪个选项。
select 方法还有很多用法,具体去看看文档吧。
3、测试check box
java 代码
public void test1() {
selenium.open("http://xxx.xxx.xxx/yyy");
selenium.check("xpath=//input[@name='MEICK_000']");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
|
我们可以使用 check 方法来确定选择哪个radio button
4、得到文本框里的文字
java 代码
assertEquals(selenium.getValue("xpath=//input[@name='WNO']"), "1");
|
getValue 方法就是得到文本框里的数值,可不是 getText 方法,用错了可就郁闷了。
5、判断页面是否存在一个元素
java 代码
assertTrue(selenium.isElementPresent("xpath=//input[@name='MEICK_000']"));
|
一般这个是用来测试当删除一些数据后,页面上有些东西就不会显示的情况。
6、判断下拉框里选择了哪个选项
java 代码
assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"),"1");
|
这个可以用来判断下拉框显示的选项是否是期望的选项。
7、如果有 alert 弹出对话框怎么办?
这个问题弄了挺长时间,可以这样来关闭弹出的对跨框:
java 代码
if(selenium.isAlertPresent()) {
selenium.getAlert();
}
|
其实当调用 selenium.getAlert() 时,就会关闭 alert 弹出的对话框。
也可以使用 System.out.println(selenium.getAlert()) 来查看对跨框显示的信息。
在测试的时候,有的人会显示许多alert 来查看运行时的数据,那么我们可以用下面的方式来关闭那些 alert:
java 代码
while(selenium.isAlertPresent()) {
selenium.getAlert();
}
|
8、如何测试一些错误消息的显示?
java 代码
assertTrue(selenium.getBodyText().indexOf("错误消息")>=0);
|
切记: getBodyText 返回的时浏览器页面上的文字,不回包含html 代码的,如果要显示html 代码,用下面这个:
java 代码
System.out.println(selenium.getHtmlSource());
|
以上就是最常用的几个方法了,例如 click, type, getValue 等等。
还有就是一定要学习 xpath, 其实xpath 也可以有“与、或、非”的操作:
java 代码
selenium.check("xpath=//input[(@name='KNYKBN')and(@value='Y')]");
|
附1:DefaultSelenium方法
http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html
附2:XPath教程 http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html |