Selenium之WebDriver

===== Selenium 2 背景 =====

Selenium 1是一款流行和完善的测试框架,支持众多浏览器(因其JavaScript实现),允许用户通过许多编程语言(从Java/C#到PHP、Erlang……)​。WebDriver弥补了Selenium 1的缺点​,跳出了Javascript的沙箱(嵌入到被测Web应用中),针对各个浏览器而开发,提供快速、轻量级的浏览器模拟器​。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。

===== WebDriver的几个实现 =====

HtmlUnit Driver – – – -> org.openqa.selenium.htmlunit.HtmlUnitDriver
Firefox Driver – – – -> org.openqa.selenium.firefox.FirefoxDriver
Internet Explorer Driver – – – -> org.openqa.selenium.ie.InternetExplorerDriver
Chrome Driver – – – -> org.openqa.selenium.chrome.ChromeDriver

ps:
(1)HtmlUnit Driver是纯java的驱动器,全部在内存中运行,不会实际打开浏览器,但其速度很快。
(2)Firefox Driver:速度慢。

===== WebDriver常用的函数接口 =====

以HtmlUnitDriver为例:

WebDriver driver = new HtmlUnitDriver();
WebDriver driver = newFirefoxDriver(); 
WebDriver driver = newInternetExplorerDriver ();

(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(); //? element.getAttribute("value");
2 days ago, this page was being read.

,

Subscribe to Comments