selenium 是基于WEB的自动化测试工具。

由以下几个工具组组成

1.selenium IDE: 一个火狐插件

点击这个插件就进入录制界面,能够记录用户的操作,并且将其导出为可重复使用的测试脚本,并且支持多种语言

优点:

无需编程技能即可快速上手

缺点:

1.分散的脚本不可重用且难以维护,一旦UI发生变化测试就很受影响。

2.系统在测试之前必须可用。不适用于ATDD

3.仅支持firefox,不支持其他浏览器,无法做浏览器兼容性测试

 

2.selenium RC (selenium 1):

运行原理:在浏览器中注入javaScript(selenium core)来执行测试

优点:

支持的浏览器多,几乎支持所有的浏览器

缺点 :

1.需要开始selenium server服务。

1.为了防止恶意的javaScript,所有浏览器都加强了对javaScript的安全策略,所以有些场景selenium 1没法支持。

(浏览器由于安全问题不允许不同域之间的JS调用,而selenium1中的工作方式就是在宿主页面注入JS并且通过调用JS来执行测试操作的)

2.编程方式更偏向于面向过程,可能会导致项目中一大堆重复的方法

举例:

1.先开启server服务:

java -jar  C:\Users\qiuwy\.m2\repository\org\seleniumhq\selenium\selenium-server\2.44.0\selenium-server-standalone-2.40.0.jar

 

2.支持测试

测试代码:

import org.junit.Test;

import com.thoughtworks.selenium.DefaultSelenium;

public class OpenBaiduBySelenium1 {

   @Test

   public void openbaiduSelenium1(){

      //实例化selenium1对象;

      //第一个参数是selenium服务器的主机名称或ip地址;第二个参数是服务器端口,默认是4444;

      //第三个参数是加载对应的浏览器;第四个参数是起始url,浏览器会指向该url上的selenium资源(这个我也不是很明白)

      DefaultSelenium selenium=new DefaultSelenium("localhost",4444,"*firefox","http://www.baidu.com");

      //启动浏览器

      selenium.start();

      //在浏览器打开http://www.baidu.com

      selenium.open("http://www.baidu.com");

      //在百度搜索框输入“selenium

      selenium.type("id=kw", "selenium");

      //点击“百度一下”按钮

      selenium.click("id=su");

      System.out.println(selenium.getTitle());

   }

}

 

3.selenium 2(webdriver)

运行原理:通过原生浏览器支持或者是浏览器扩展直接控制浏览器

(原生浏览器是指火狐、IE、谷歌(Chrome)、Safari、Opera等这一类拥有完整独立内核的浏览器)

优点:

1.提供了一套友好的API,使得自动化测试代码的可读性和可维护性大大提高

2.相对selenium1来说,selenium2的运行速度快些。

3.可以驱动本地浏览器,从而确保测试的行为能够尽可能地接近于用户行为

4.能够绕过js限制

5.支持Android(AndroidDriver)和iPhone(iPhoneDriver)的移动应用测试。

6.还可以做无界面的前端自动化测试,HtmlDriver

缺点:

支持的浏览器少,firefox(FriefoxDriver),ie(InternetExploerDriver),opera(OperaDriver),chrome(ChromeDriver)

举例:

   @Test

   public void openBaiduByFirefoxDriver(){

      WebDriver driver =new FirefoxDriver();

        driver.get("http://www.baidu.com");

        driver.findElement(By.id("kw")).sendKeys("HtmlUnit");;//在搜索输入框里输入"HtmlUnit"

        driver.findElement(By.id("su")).click();//点击“百度一下”按钮

        System.out.println("页面标题:"+driver.getTitle()); 

        System.out.println("页面URL:"+driver.getCurrentUrl());//返回当前页面的URL 

        driver.close();

   }

 

4.Selenium Grid

能够让测试用例在不同环境不同时间并行测试,从而提高测试效率。支持selenium 1和selenium2

后续再研究