免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1804 | 回复: 0
打印 上一主题 下一主题

Selenium 介绍及使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:48 |只看该作者 |倒序浏览

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 IDEclient(相当于通过编程来实现一切),是支持多语言的。

2.安装

       step0:前提,机器上有JDK1.5eclipse,最好有能跑起来的web工程;   

       step1:下载地址http://seleniumhq.org/download/ 页面中 Selenuium Client Driversjava版本的client 以及Selenium Server

       step2:启动 Seleniumserver 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')]");

 

 

1DefaultSelenium方法

http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html

2XPath教程 http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP