`
fangyinhui
  • 浏览: 13678 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

webdriver2

 
阅读更多

Selenium2.0之WebDriver学习总结(2)  

来自lvzeting   2012-03-05 16:12:08|  分类: 自动化测试|字号 订阅

 
 

(三)   命令和操作

这一部分将介绍一下WebDriver的一些具体操作和命令,实际操作中,我们需要两大工具来帮助我们:FireBugXpath工具,这两者都是Firefox上的插件。接下来我们所讲解的都是以FirefoxDriver为基础的,且基于WebDriver driver = new FirefoxDriver();创建的一个driver实例:

a)         访问一个页面

第一件你想使用WebDriver做的事情肯定是访问一个页面,最基础的方法是调用“get”方法:

 

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

同样我们可以使用:

 

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

WebDriver会自动等待到该页面完全加载才执行接下来的测试和脚本的执行。但是如果你的页面存在很多的AJAX加载,此时WebDriver是无法知道是否完成加载。检查此类页面是否加载完成,那么我们就需要ExplicitImplicit Wait(这两个将在后面文章解释)。

 

b)         定位UI元素

WebDriver可以通过WebDriver实例来定位元素,任何语言库都含有“Find Element”和“Find Elements”的方法。第一个方法返回一个WebElement或者抛出异常。后者返回所有WebElement的列表,或者空列表。

获取和定位元素我们调用“By”方法。下面具体解释下“By”方法:

By ID

这是一个极为有效定位元素的方法。普遍的现状是UI工程师在实际编写页面时很少写id或者自动生产一个ID,这些都是需要避免的。对于一个页面Element来说,class比自动生产的id更好。

通过id定位元素的例子:

<div id="coolestWidgetEvah">...</div>

WebElement element = driver.findElement(By.id("coolestWidgetEvah"));


 By Class Name

        这里的class指的是DOM中的元素,在实际使用过程中,我们也会发现很多DOM元素含有相同的class名。

通过class name定位元素例子:

 

 

 

<div class="cheese">

<span>Cheddar</span>

</div>

<div class="cheese">

<span>Gouda</span>

</div>

List<WebElement> cheeses = driver.findElements(By.className("cheese"));


 

By Tag Name

DOMTag元素

Tag name 定位元素的例子:

<iframe src="..."></iframe>

WebElement frame = driver.findElement(By.tagName("iframe"));


By Name

例子:

<input name="cheese" type="text"/>

WebElement cheese = driver.findElement(By.name("cheese"));


By Link Text

例子:

 

 

 

<a href="http://www.google.com/search?q=cheese">cheese</a>>

WebElement cheese = driver.findElement(By.linkText("cheese"));

 

By Partial Link Text

根据链接的部分文字

例子:

 

<a href="http://www.google.com/search?q=cheese">search for cheese</a>>

WebElement cheese = driver.findElement(By.partialLinkText("cheese"));


By CSS

从名字上看,这是根据CSS来定位元素。

例子:

 

<div id="food">

         <span class="dairy">milk</span>

         <span class="dairy aged">cheese</span>

</div>

WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy aged"));

 

 

By XPATH

在高级的水平下,WebDriver尽可能使用浏览器的原生的XPath能力。在那些没有原生的XPath支持的浏览器,我们提供自己的实现方式。但是三个Driver有一定的区别。Selenium2.0之WebDriver学习总结(2) - 网易杭州QA - 网易杭州 QA Team

 

例子:

<inputtype="text"name="example"/>

<INPUT type="text" name="other" />

List<WebElement> inputs = driver.findElements(By.xpath("//input")); 

查找结果:

 

HTML元素有时并不需明确声明,因为他们将默认为已知值的属性。例如,input标签,就不需要设置typetext,默认属性就是text,经验原则:WebDriver在使用中的XPath时,不应该期望能够对这些隐含属性相匹配。

 

Selenium2.0之WebDriver学习总结(2) - 网易杭州QA - 网易杭州 QA Team
 

使用javascript

您可以执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自动转换到一个WebElement对象。

例子:

jQuery的页面加载一个简单的例子:

 

WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('.cheese')[0]"); 

寻求所有的页面上的input元素:

 

List<WebElement> labels = driver.findElements(By.tagName("label"));

List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript(

    "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +

"inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);

 

用户表单填充

例子:

遍历select标签

 

WebElement select = driver.findElement(By.tagName("select"));

List<WebElement> allOptions = select.findElements(By.tagName("option"));

for (WebElement option : allOptions) {

             System.out.println(String.format("Value is: %s", option.getAttribute("value")));

             option.click();

}

 

选择某一个选项:

 

Select select = new Select(driver.findElement(By.tagName("select")));

select.deselectAll();

select.selectByVisibleText("Edam");

上传文件:

WebElement FileUpload =driver.findElement(By.id("upload"));

String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";

FileUpload.sendKeys(filePath);

 

提交:

Submitform

 

driver.findElement(By.id("submit")).click();


submit不在form

 

WebElement.submit();

 

 

拖拽操作:

 

WebElement element = driver.findElement(By.name("source"));

WebElement target = driver.findElement(By.name("target"));

(new Actions(driver)).dragAndDrop(element, target).perform();


 

 

 

 

WindowsFrames之间的切换

一些web应用程序有许多Frames或多个Windows WebDriver支持使用“switchTo”的方法实现的窗口之间切换。

 

driver.switchTo().window("windowName");

所有对driver的调用都会指向特定的窗口,但是我们怎么知道窗口的名字呢?我们可以查看javascript代码和打开他的链接:

 

<a href="somewhere.html" target="windowName">Click here to open a new window</a>

另外,还可以通过“window handle”去调用“switchTo().window()”,通过这个,我们就遍历来找到所有打开的窗口:

 

for (String handle : driver.getWindowHandles()) {

driver.switchTo().window(handle);

}

 

Switch同样支持frame

 

driver.switchTo().frame("frameName");

同样可以使用他访问subframe,找frameName的第一个subframe中叫做childframe

 

driver.switchTo().frame("frameName.0.child");

 

弹出框:

selenium2.0开始,已经支持对弹出框的获取

 

Alert alert = driver.switchTo().alert();

这个方法会返回当前被打开打警告框,你可以进行统一,取消,读取提示内容,后则进入到提示,这个同样使用alertsconfirmsprompts

 

NavigationHistory and Location

之前我们就可以通过get方法来打开一个网页,像我们所看到的,WebDriver同样还有许多小接口,Navigation就是其中一个小接口:

 

driver.navigate().to("http://www.example.com");

navigate().toget()其实作用是一样的,但是navigate还可以进行浏览器的前进后退操作:

 

driver.navigate().forward();

driver.navigate().back(); 

分享到:
评论

相关推荐

    selenium webdriver2 环境搭建

    ### Selenium WebDriver2 环境搭建详解 #### 一、概述 Selenium WebDriver 是一个用于自动化Web应用测试的工具,它直接与浏览器交互,并且能够模拟真实用户的操作。WebDriver2 版本相比于早期版本有着更好的稳定性...

    selenium webdriver2 一个完整demo.docx

    ### Selenium WebDriver2 完整示例解析 #### 环境搭建与准备工作 根据文档提供的信息,本示例主要介绍了如何使用Selenium WebDriver2.0进行自动化测试的完整流程。首先,我们需要完成以下准备工作: 1. **下载...

    WebDriver实验版VB6版WebDriver实验,压缩包中有技术文档《WebDriver原理及实验》

    2. **WebDriver的优势**:WebDriver相比传统的记录回放工具,如Selenium RC,提供了更底层的浏览器控制,能够实现更精确的测试。它支持多种浏览器和操作系统,并且允许实时获取页面元素的状态,增强了测试的灵活性和...

    webdriver API中文版

    2. **使用 WebDriver 打开浏览器**:通过调用 WebDriver 的相应方法,如 `FirefoxDriver()` 或 `ChromeDriver()`,可以启动指定的浏览器实例。 3. **打开测试页面**:利用 `get()` 方法,可以将浏览器导航到指定的...

    Chrome浏览器和版本配套webdriver 114

    2. 配置政策文件:创建一个组策略对象(GPO),并设置相应的配置项来阻止Chrome自动更新。 3. 使用命令行启动Chrome:在启动Chrome时添加`--disable-update`或`--no-first-run`参数,这可以临时阻止自动更新。 4. ...

    webdriver模拟火狐firefox浏览器

    2. GeckoDriver:Firefox从版本48开始引入了新的渲染引擎Gecko,相应的,WebDriver需要使用GeckoDriver作为中间件来通信。GeckoDriver是一个服务器,它接收来自WebDriver的命令,并将其转发给Firefox浏览器。 3. ...

    WebDriver

    WebDriver 是一个用于自动化浏览器操作的接口,它是Web测试领域中的一个重要工具。WebDriver允许开发者编写脚本,模拟用户在浏览器上的各种交互行为,如点击、输入、导航等,从而实现对Web应用的功能验证和性能测试...

    php-webdriver-bindings.rar_php-webdriver

    2. **全面支持**:库支持所有支持 Webdriver 的浏览器,包括 Chrome、Firefox、Safari 和 Edge 等。这使得测试可以在多种浏览器环境下运行,确保应用的兼容性。 3. **灵活性**:你可以选择本地运行测试,或者利用...

    WebDriver命令参考手册

    WebDriver 命令参考手册 WebDriver 命令参考手册是 WebDriver 的一个重要组件,提供了 WebDriver 的命令参考手册。该手册详细介绍了 WebDriver 的各种命令和协议,旨在帮助开发者更好地理解和使用 WebDriver。 ...

    selenium2 webdriver中文文档完整

    Selenium2 WebDriver 中文文档完整 Selenium2 WebDriver 是一个流行的自动化测试工具,用于模拟用户交互来测试Web应用程序。本文档将详细介绍 Selenium2 WebDriver 的安装、配置、基本操作和使用技巧。 安装 ...

    Selenium WebDriver 所需jar包

    2. **浏览器驱动**:每个浏览器都需要一个特定的驱动程序(如ChromeDriver、GeckoDriver、IEDriverServer)来支持WebDriver。这些驱动是桥接程序,使WebDriver能够与浏览器通信。压缩包中的jar可能包含了一些常见...

    WebDriver(Chrome、IE、Edge、FireFox)

    2. **IE WebDriver**,也称为IEDriverServer,是为Internet Explorer浏览器设计的。由于IE的市场份额逐渐下降,它的使用相对较少,但仍然在某些企业环境中很重要。设置IE Driver时,需要确保安装了正确的版本(32位...

    ChromeWebdriver-win64

    ChromeWebdriver-win64是一个专为Windows平台设计的自动化测试工具,主要用于驱动Google Chrome浏览器进行自动化操作。在软件开发和测试领域,Selenium是一个广泛使用的Web应用程序自动化框架,而ChromeDriver则是...

    Python库 | webdriver_manager-1.5.1-py2.py3-none-any.whl

    这个压缩包文件`webdriver_manager-1.5.1-py2.py3-none-any.whl`包含了适用于Python 2和3版本的库,无需用户手动下载或配置WebDriver的特定版本。 `webdriver_manager`库的核心功能在于简化了Selenium WebDriver的...

    webdriver的chromedriver.exe

    WebDriver是一种开源的自动化测试框架,它允许程序员通过编程方式控制Web浏览器进行自动化操作,例如点击按钮、填写表单、导航等。在IT行业中,WebDriver被广泛应用于软件测试,特别是Web应用的端到端测试,以及数据...

    Selenium WebDriver实战宝典(吴晓华)

    全书共分为四个部分:第1部分基础篇主要讲解自动化测试相关的基础理论、WebDriver 环境安装、单元测试工具的使用方法以及 WebDrvier的入门使用实例,第2部分实战应用篇基于丰富的实战案例讲解页面元素的定位方法以及...

    IE Webdriver (Python)

    2. **兼容性问题**:确保 IE 和 WebDriver 版本匹配。 3. **代理设置**:如果网络需要通过代理,需要在 WebDriver 中配置代理设置。 4. **安全设置**:可能需要在 IE 的“安全”和“隐私”设置中调整以允许自动化。 ...

Global site tag (gtag.js) - Google Analytics