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沙盒。
本文转自:http://katrina-lxd.blog.sohu.com/167646699.html
分享到:
相关推荐
Ruby+Selenium-Webdriver是一个强大的自动化测试工具组合,用于模拟真实用户在浏览器中与网页进行交互。Ruby是一种动态、面向对象的编程语言,而Selenium WebDriver是一个开源的自动化测试框架,支持多种浏览器和...
在IT行业中,Selenium WebDriver是一个广泛使用的自动化测试工具,尤其在Web应用的自动化测试领域。它允许开发者编写脚本,模拟用户与浏览器的交互,从而进行功能性和回归性测试。这个压缩包“selenium-webdriver...
Selenium-Webdriver系列教程旨在引导读者理解和掌握Selenium 2.0,即WebDriver的核心概念、常用方法和高级功能。Selenium 1.x虽然已被弃用,但由于丰富的资源和历史积累,仍然被许多人广泛使用。然而,随着Selenium ...
"selenium+webdriver学习文档" 本文档主要介绍了使用 Selenium+WebDriver 进行自动化测试的学习方法,从基础到精通的学习方法。下面我们将对标题、描述、标签和部分内容进行详细的解释。 标题:selenium+webdriver...
标题《Selenium-WebDriver从入门到提高》说明这是一本关于Selenium-WebDriver实用指南的书籍,旨在帮助读者从基础到进阶的各个层次上掌握Selenium-WebDriver的使用方法。Selenium-WebDriver作为一个自动化测试工具,...
Selenium 客户端和 WebDriver 语言绑定(Selenium Clients and WebDriver Language Bindings)适用于C#语言 为了创建与 Selenium Server (Remote WebDriver) 交互的脚本或创建本地 Selenium WebDriver 脚本,您需要...
selenium-webdriver原创selenium-webdriver原创selenium-webdriver原创selenium-webdriver原创
标题中的“谷歌浏览器驱动nupkg格式121.0.6167.8500版本selenium.webdriver.chromedriver.1”指的是用于自动化测试的Chrome浏览器驱动程序,这是一个特定版本的软件,用于与Selenium WebDriver进行交互。nupkg格式是...
个人最近开始学习Selenium,但发现对应python的有用的资料奇少无比,于是 自己努力收集并整理了一些资料 学会搭建环境后的同学,建议先抛弃其他一切资料,先看一遍这个python资料,保证收益匪浅,基本上可以动手做...
Python 3.0作为流行的编程语言,因其简洁易读的语法和丰富的库支持,成为了编写Selenium测试脚本的首选语言之一。本文将深入探讨Selenium 3.0与Python 3.0结合使用的相关知识点。 ### 1. Selenium WebDriver 概述 ...
在本资源中,我们关注的是使用Ruby和Selenium-Webdriver进行自动化测试的源代码,具体为"test003"。Ruby是一种流行的、动态的、面向对象的编程语言,而Selenium-Webdriver则是一个强大的工具,允许我们对浏览器进行...
安装selenium webdriver 安装ruby1.8.7或1.9.2。注意selenium-webdriver只支持1.8.7以上的ruby版本; 使用gem安装selenium-webdriver;打开命令行,输入下列代码完成安装。注意,如果你的开发环境需要http proxy...
Selenium2 WebDriver 中文文档完整 Selenium2 WebDriver 是一个流行的自动化测试工具,用于模拟用户交互来测试Web应用程序。本文档将详细介绍 Selenium2 WebDriver 的安装、配置、基本操作和使用技巧。 安装 ...
**Selenium WebDriver API 文档详解** Selenium WebDriver 是一个用于自动化浏览器操作的API,它允许开发者编写代码来模拟用户在浏览器中的各种交互行为,如点击、输入文本、导航等。这个文档,`selenium-API-2.12....
selenium-webdriver-2.45.0.gem
Python+selenium需要用到的chromedriver驱动,把它放在python 的安装目录下,即可 selenium的元素八大定位方法详解
Selenium WebDriver是Selenium的核心组件之一,它是一个接口,可以编程地控制浏览器行为。通过使用WebDriver,可以编写自动化测试脚本,以确保应用程序按预期工作。 Python是一种广泛使用的高级编程语言,它具有...
Selenium-WebDriverApi接口详解
在Selenium 2.44版本中,WebDriver是其核心部分,它提供了一种编程接口来控制浏览器,并执行类似于真实用户操作的行为。这个版本主要关注FirefoxDriver的使用,它是WebDriver针对Firefox浏览器的特定实现。 **1. ...