`
xinklabi
  • 浏览: 1586797 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Selenium Webdriver简单介绍(包括HTMLUnitDriver)

 
阅读更多

selenium之WebDriver  

2012-08-08 11:33:40|  分类: 默认分类|举报|字号 订阅

 
 
1、什么情况下选用WebDriver? 
(1)Selenium-1.0不支持的浏览器功能。 
(2)multiple frames, multiple browser windows, popups, and alerts. 
(3)页面导航。 
(4)下拉。 
(5)基于AJAX的UI元素。 

2、WebDriver的几个实现: 
Name of driver                 Available on which OS?       Class to instantiate 
HtmlUnit Driver                All                      org.openqa.selenium.htmlunit.HtmlUnitDriver 
Firefox Driver                   All                      org.openqa.selenium.firefox.FirefoxDriver 
Internet Explorer Driver   Windows           org.openqa.selenium.ie.InternetExplorerDriver 
Chrome Driver                 All                      org.openqa.selenium.chrome.ChromeDriver 

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

3、WebDriver常用的函数接口(以HtmlUnitDriver为例) 
WebDriver driver = new HtmlUnitDriver(); 
(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(); 清除文本域内容 

4、填写表单 
(1)处理SELECT标签: 
WebElement select = driver.findElement(By.xpath( "//select" )); 
List<WebElement> allOptions = select.findElements(By.tagName( "option" )); 
for (WebElement option : allOptions) { 
System.out.println(String.format( "Value is: %s" , option.getValue())); 
option.setSelected(); 

(2)使用Select类处理SELECT标签: 
Select select = new Select(driver.findElement(By.xpath( "//select" ))); 
select.deselectAll(); 
select.selectByVisibleText( "Edam" ); 

5、提交: 
(1)driver.findElement(By.id( "submit" )).click(); 
(2)element.submit();(要求element必须在表单中,否则抛出NoSuchElementException) 

6、检查元素是否在页面上(并且可以获取元素的尺寸和位置,拖拉元素): 
WebElement plain = driver.findElement(By.name( "q" )); 
RenderedWebElement element = (RenderedWebElement) element;(例如HtmlUnit Driver就无法显示出内容) 

对元素拖拉: 
RenderedWebElement element = (RenderedWebElement) driver.findElement(By.name( "source" )); 
RenderedWebElement target = (RenderedWebElement) driver.findElement(By.name( "target" )); 
element.dragAndDropOn(target); 

7、在窗口和frame之间移动 
(1)在命名的窗口之间移动:switchTo 
driver.switchTo().window( "windowName" ); (可以通过js或者打开窗口的链接获取窗口名称) 
(2)也可通过窗口句柄切换: 
for (String handle : driver.getWindowHandles()) { 
driver.switchTo().window(handle); 

(3)frame之间切换或者切换到iframe: 
driver.switchTo().frame( "frameName" ); 
通过索引访问subframe: 
driver.switchTo().frame( "frameName.0.child" );(frameName的第一个subframe的明价child的frame) 

8、弹出对话框: 
窗口弹出后,可以使用如下语句访问到弹出窗口: 
Alert alert = driver.switchTo().alert(); 
获取到alert窗口后,可进行各种操作。 

9、页面导航: 
navigate().to()和get()功能完全一样。 
driver.navigate().to( "http://www.example.com" ); 

浏览器的前进和后退 
driver.navigate().forward(); 
driver.navigate().back(); 
(注意这两个方法取决于浏览器的实现,可以会出现某些调用失败) 


10、Cookies(必须首先在目标url域上) 
// Go to the correct domain 
driver.get( "http://www.example.com" ); 
// Now set the cookie. This one’s valid for the entire domain 
Cookie cookie = new Cookie( "key" , "value" ); 
driver.manage().addCookie(cookie); 
// And now output all the available cookies for the current URL 
Set<Cookie> allCookies = driver.manage().getCookies(); 
for (Cookie loadedCookie : allCookies) { 
System.out.println(String.format( "%s -> %s" , loadedCookie.getName(), loadedCookie.getValue())); 


12、WebDriver支持的浏览器不如Selenium RC多: 
为了支持更多的浏览器并且使用WebDriver API,可以使用SeleneseCommandExecutor 
Capabilities capabilities = new DesiredCapabilities() 
capabilities.setBrowserName( "safari" ); 
CommandExecutor executor = new SeleneseCommandExecutor( "http:localhost:4444/" , "http://WebDriver driver = new RemoteWebDriver(executor, capabilities); 
这种方法的限制条件:目前findElements方法不能使用,并且首先js沙盒。
分享到:
评论

相关推荐

    selenium webdriver学习.zip

    WebDriver针对各个浏览器而开发,取代了嵌入到被测...它还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。WebDriver API可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。

    htmlunit jar包

    在给定的场景中,我们讨论的是`selenium-htmlunit-driver-2.9.0.jar`,这是一个与Selenium WebDriver兼容的驱动程序,专门用于通过HTMLUnit来控制Web浏览器。 Selenium WebDriver是一个自动化测试工具,它允许...

    selenium2.0中文帮助文档.pdf

    - **功能描述**: 这个简单的例子展示了如何使用Selenium WebDriver打开一个网页。 #### 二、Webdriver对浏览器的支持 - **2.1 HtmlUnitDriver**: 一种无头浏览器驱动,适用于不需要图形界面的情况。 - **2.2 ...

    selenium2.0_中文帮助文档

    Selenium WebDriver 支持多种浏览器,包括 Firefox、Internet Explorer 和 HtmlUnit 等。其中 Firefox 是 Selenium 最早且支持最成熟的浏览器之一。然而,在实际的自动化测试中,考虑到性能因素,尤其是为了加速持续...

    selenium浏览器driver打包

    本篇将详细介绍Selenium中常用的浏览器Driver,以及如何打包和使用它们。 首先,我们来看看包含在压缩包中的几个主要浏览器Driver: 1. **ChromeDriver (chromedriver.exe)**:这是针对谷歌浏览器(Chrome)的...

    Selenium使用教程.pdf

    Selenium分为几个部分,其中**Selenium WebDriver**是最常用的一个组件。 ##### 1.1 下载Selenium库 Selenium的最新版本可以通过访问官方下载页面获取:[http://code.google.com/p/selenium/downloads/list]...

    WebDriver-Object

    本文将详细探讨WebDriver中的Page Factory模式,包括其原理、实现方式以及如何有效地使用它来提高测试代码的可读性和可维护性。 #### Page Factory:WebDriver的支持库中的工厂类 为了支持Page Object设计模式,...

    Selenium2.0中文帮助文档

    在第2章中,文档介绍了Webdriver对不同浏览器的支持,包括HtmlUnitDriver、FirefoxDriver和InternetExplorerDriver。这部分内容提供了不同浏览器驱动的使用示例代码,帮助用户选择和配置合适的浏览器驱动程序。 第3...

    selenium2.0

    - **示例代码**:以下是一个简单的 Java 示例,展示了如何使用 Selenium WebDriver 进行基本的页面操作。 ```java package org.openqa.selenium.example; import org.openqa.selenium.By; import org.openqa....

    html转图片的java代码

    1. **Selenium WebDriver**: Selenium是一个自动化测试工具,但它也可以用来渲染Web页面并获取屏幕截图。首先,你需要添加Selenium的Java库到你的项目中。然后,你可以使用WebDriver的`get()`方法加载HTML内容,接着...

    pythonselenium环境配置教程.pdf

    WebDriver还包括无头浏览器HtmlUnitDriver,以及用于Android和iPhone移动应用测试的AndroidDriver和IPhoneDriver。各个浏览器驱动可以从官方指定地址下载,如`https://code.google.com/p/selenium/downloads/list`...

    README.txt

    import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import static junit.framework.Assert.assertNotNull; public...

    pythonselenium环境配置教程[整理].pdf

    本教程将详细介绍如何在Windows环境下配置Python Selenium的开发环境。 首先,我们需要准备以下工具: 1. Python 开发环境:访问 http://python.org/getit/ 下载Python安装包。Python有两个主要版本,2.7.x和3.3.x...

    htmlunit-driver:适用于HtmlUnit无头浏览器的WebDriver兼容驱动程序

    HtmlUnitDriver是适用于无头浏览器的WebDriver兼容驱动程序。 消息 下载及安装 Maven / Gradle / ... 添加对Maven Central中可用的最新htmlunit-driver版本的依赖关系,请注意,更改了artifactId和version以匹配...

Global site tag (gtag.js) - Google Analytics