WebDriver(一) , In 测试 , Views: 4719 , Comments: 1 , Index: 4846 , 14 November 2012

WebDriver与之前Selenium的JS注入实现不同,直接利用了浏览器native support来操作浏览器。所以对于不同平台,不同的浏览器,必须依赖一个特定的浏览器的native component来实现把WebDriver API的调用转化为浏览器的native invoke。

在我们new一个WebDriver的过程中,Selenium首先会确认浏览器的native component是否存在可用而且版本匹配。接着就在目标浏览器里启动一整套Web Service,这套Web Service使用了Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等等等等。

WebDriver Wire协议是通用的,也就是说不管是FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。例如FirefoxDriver初始化成功之后,默认会从http://localhost:7055开始,而ChromeDriver则大概是http://localhost:46350之类的。接下来,我们调用WebDriver的任何API,都需要借助一个ComandExecutor发送一个命令,实际上是一个HTTP request给46350端口上的Web Service。在我们的HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情。

不同浏览器的WebDriver子类,都需要依赖特定的浏览器原生组件,例如Firefox就需要一个add-on名字叫webdriver.xpi。而IE的话就需要用到一个dll文件来转化Web Service的命令为浏览器native的调用。

Selenium Core , In 测试 , Views: 6081 , Comments: 0 , Index: 4825 , 11 March 2011

Selenium是ThroughtWorks公司的一个强大的开源Web功能测试工具系列,这个系列现在主要包括以下4款:

Selenium Core:支持DHTML的测试案例(效果类似数据驱动测试),它由一些纯js代码组成, 可以运行在windows/linux的不同browser上。它是Selenium IDE和Selenium RC的引擎。

Selenium IDE:支持并且只支持Firefox浏览器,属于Firefox的一个插件,支持的浏览器太少,而依附于Firefox 也不便于日后开展自动化测试,但是,它的录制快捷好用!并且有代码转换功能,可以把Selenium 语言测试用例转为C#,Java,PHP,Ruby,Prel,Groovy,Python等语言的测试案例。

Selenium RC:Selenium Remote Control。

Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务,能极大加快Web应用的功能测试。

Selenium Core HTA:Selenium Core HTA其实是Selenium Core的额外模式,你只要Selenium Core配置稍加修改,即为HTA模式,Selenium Core HTA可以在IE最高安全等级(特权)下工作,这意味着它仅能在IE下工作,由于限制较大,下面将排除对Selenium Core HTA的讨论。

Selenium之WebDriver , In 测试 , Views: 4383 , Comments: 0 , Index: 6424 , 12 February 2011

(1)页面导航

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

完全装载页面后将控制返回给测试脚本。注意:当页面又很多AJAX调用时,该接口无法确认页面是否完全装载,这是需要使用”waits”。

(2)与页面交互

<input type= "text" name= "passwd" id= "passwd-id" />
//找到输入框元素
WebElement element;
element = driver.findElement(By.id( "passwd-id" ));
element = driver.findElement(By.name( "passwd" ));
element = driver.findElement(By.xpath( "//input[@id=’passwd-id’]" ));
//XPATH返回第一个匹配到的元素,如果没有匹配到,抛出NoSuchElementException
 
//在输入框中输入内容
element.sendKeys( "some text" );
element.sendKeys( " and some" , Keys.ARROW_DOWN); (按向下箭头)
//任何页面元素都可以调用sendKeys,例如可以测试一些快捷方式键,键盘的每次输入都是附加在文本串的后面
 
//清除输入框内容
element.clear(); 
 
//获取输入框的文本内容:
element.getText();