ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:24.42KB ,
资源ID:4423402      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4423402.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(译Selenium 20 WebDriver.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

译Selenium 20 WebDriver.docx

1、译Selenium 20 WebDriver【译】Selenium 2.0 WebDriverSelenium WebDriver注意:我们正致力于完善帮助指南的每一个章节,虽然这个章节仍然存在需要完善的地方,不过我们坚信当前你看到的帮助信息是精确无误的,后续我们会提供更多的指导信息来完善帮助文档。1.WebDriver介绍Selenium 2.0最主要的新特性就是集成了WebDriver API。我们设计WebDriver的初衷是提供更加简单明了的接口来弥补Selenium-RC API的不足。在动态网页中,通常只会更新局部的html元素,WebDriver会很好的帮助用户快速定位这些元素。

2、我们最终的目的是通过提供精心设计的面向对象API来解决现代高级网页中的测试难题。2.WebDriver如何驱动浏览器?与Selenium-RC有什么区别?不同类型的浏览器都会有原生的接口支持自动化操作,Selenium通过这些接口直接向浏览器发送指令。如何发送这些指令取决于你当前使用的浏览器类型,我们将在这一章节后面来详细介绍。看上去WebDriver与之前Selenium-RC的实现方式类似,实际上两者之间存在着本质的区别。对于所有类型的浏览器Selenium-RC都是使用的同一种方法:当浏览器启动时,向其中注入javascript,从而使用这些js来驱动浏览器中的AUT(Applicati

3、on Under Test)。WebDriver并没有使用这种技术,它是通过调用浏览器原生的自动化API直接驱动浏览器。3.WebDriver与Selenium Server是否需要是用Selenium Server取决于你使用WebDriver的方式。以下两种情况不需要使用Selenium Server,WebDriver直接运行浏览器即可:1、testcases仅仅使用了Webdriver的API;2、浏览器和testcase在同一台PC上,而且testcases仅仅使用了Webdriver的API。以下三种情况你需要结合Selenium Server来使用WebDriver:1)使用Se

4、lenium-Grid管理集群环境(或者虚拟机)上的testcase;2)需要调用非本机上的不同版本的浏览器;3)未使用任何language binding(java/c#/python/ruby),且有意向使用HtmlUnitDriver。4.配置Selenium-WebDriver工程安装Selenium是指在开发环境上配置一个工程,然后可以在这个工程中用Selenium编写程序。如何配置取决于你使用的开发语言和编程环境。使用Maven是配置一个Selenium 2.0 java工程最简单的方式。Maven会下载所有java bingdings以及所有相关的库(the Selenium 2

5、.0 java client library)。通过使用pom.xml(maven配置文件)来新建工程,你可以根据自己的喜好将Maven工程导入IntelliJ IDEA或者Eclipse。首先,创建一个文件夹存放Maven工程文件。然后,创建pom.xml,你可以使用text editor来编辑。鉴于已经有很多关于“如何在Maven工程中使用pom.xml”优秀的参考文献,这里将不再过多的讨论相关细节。下面给出一个示例,为你的工程也创建一个类似的文件。 4.0.0 MySel20Proj MySel20Proj 1.0 org.seleniumhq.selenium selenium-jav

6、a 2.38.0 com.opera operadriver com.opera operadriver 1.5 org.seleniumhq.selenium selenium-remote-driver 请确认你使用的WebDriver是最新的当前版本。在这篇文档撰写时,上述示例给出的是最新的版本。在Selenium2.0发布不久WebDriver就有过频繁的更新。请在这个链接Maven Download Page确认当前的版本,相应地修改你工程中的pon.xml。现在,你可以通过dos界面使用CD命令进入工程所在文件夹,通过以下命令运行Maven。mvn clean install运行之

7、后会自动下载Selenium及相关套件,并加载到你的工程中去。最后,将你的工程导入到你偏好的IDE中。如果你对导入的过程不是很清楚,我们已经准备了操作指南。Importing a maven project into IntelliJ IDEA.Importing a maven project into Eclipse5.如何将自动化工程从Selenium1.0迁移到Selenium2.0已经在Selenium1.0上构建测试工程的用户,我们为您提供了一份指导如何将已有的代码迁移到Selenium2.0。Selenium2.0的首席开发工程师Simon Stewart为此撰写了一片文章:Ma

8、grating From Selenium RC to Selenium WebDriver。6.Selenium-WebDriver API简介WebDriver可以用来实现Web应用程序的自动化测试,特别适合于验证实际结果是否符合预期结果的场景。WebDriver旨在提供比Selenium1.0更加易用、友好的API,便于用户的探索和理解,从而使测试用例变得容易阅读和维护。WebDriver没有使用任何第三方测试框架,所以它可以很好与单元测试工具或者最古老的main函数结合使用。本章节将介绍如何使用WebDriver的API,帮助你慢慢开始了解WebDriver。如果你还没有新建一个Sel

9、enium工程,请先完成这个操作,在这个章节的上面有详细的描述。当你创建完Selenium工程后,你会发现WebDriver和普通的第三方库一样是完全独立的,在你使用之前不需要启动任何额外的进程或者安装程序,相反如果你使用Selenium-RC需要先启动代理服务器。注意:当你使用如下WebDriver时需要额外的步骤:Chrome Driver,Opera Driver,Android Driver,IPhone Driver。现在你肯定跃跃欲试要写一些代码了。我们以一个简单的例子来开始第一段旅程:在Google上搜索“Cheese”,并打印出搜索结果网页的标题。package org.ope

10、nqa.selenium.example;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;public class Sele

11、nium2Example public static void main(String args) / 创建一个FirefoxDriver实例 / 这个类依赖于接口而不是接口的实现 WebDriver driver = new FirefoxDriver(); / 使用get方法访问Google driver.get(); / 使用下面这个方法也能够达到访问Google的目的 / driver.navigate().to(); / 找到html输入框的name WebElement element = driver.findElement(By.name(q); / 输入要查找的内容 elem

12、ent.sendKeys(Cheese!); / 提交表单,WebDriver会自动找到我们需要提交的元素所在的表单 element.submit(); / 打印网页的标题 System.out.println(Page title is: + driver.getTitle(); / Google的搜索网页会通过JS动态渲染 / 等待页面加载完毕,超时时间为10秒 (new WebDriverWait(driver, 10).until(new ExpectedCondition() public Boolean apply(WebDriver d) return d.getTitle().

13、toLowerCase().startsWith(cheese!); ); / 控制台上将打印如下信息: cheese! - Google Search System.out.println(Page title is: + driver.getTitle(); / 关闭浏览器 driver.quit(); 在本章节的接下来篇幅,我们将学习如何使用WebDriver操作你的浏览器,如何使用框架和窗口来测试Web网站。当然,我们将提供更加翔实的论述和举例。7.Selenium-WebDriver API详解7.1获取Web页面我们第一件要做的事是通过WebDriver取得Web页面的控制权,一般

14、情况下使用get方法driver.get();在某些情况下,比如操作系统和浏览器的穿插组合,WebDriver有可能不会等待Web页面加载完成,这种情况下WebDriver会返回错误或者直接运行下一步操作。为了保证程序的健壮性,你需要等待页面中某个元素加载完成后再进行下一步操作,请参考Explicit and Implicit Waits。7.2定位UI元素我们可以通过WebDriver实例或者WebElement类来定位UI元素。我们为每种编程语言都提供了两种方法:“Find Element”和“Find Elements”。第一种方法返回的一个WebElement,找不到则抛出异常。第二个

15、方法返回一个WebElement链表(List),在找不到任何DOM元素的情况下会返回空的链表。Find方法会使用类似探测器的类,类名叫做By。下面列举By的一些常用方法:By ID当我们定位一个UI 元素,这个是最有效也是最好的方法。不过这个方法不是万能的,有的前端开发在设计UI元素时会遗漏ID或者使用动态ID,这两种情况下都要避免使用这个方法。这时候使用获取class名称方法比By ID更合适。示例:如何使用该方法定位元素.WebElement element = driver.findElement(By.id(coolestWidgetEvah);By Class Name在这种场景下

16、,我们引用DOM元素的属性。实际情况是很多元素都有一样的Class Name,因此找到多个有相同Class Name的元素,比找到第一个拥有这个Class Name的元素来的更重要。示例:如何使用该方法定位元素CheddarGoudaList cheeses = driver.findElements(By.className(cheese);By Tag NameDOM元素Tag的名称。示例:如何使用该方法定位元素WebElement frame = driver.findElement(By.tagName(iframe);By Name找到与Name属性相同的Input元素。示例:如何使

17、用该方法定位元素WebElement cheese = driver.findElement(By.name(cheese);By Link Text找到与Text属性精确匹配的超链接。示例:如何使用该方法定位元素a href=WebElement cheese = driver.findElement(By.linkText(cheese);By Partial Link Text找到与Text属性模糊匹配的超链接。示例:如何使用该方法定位元素a href= for cheeseWebElement cheese = driver.findElement(By.partialLinkText

18、(cheese);By CSS这个方法名称意味着它是一个CSS探测器。前提是浏览器默认支持这种方法,建议根据W3C的标准文档构建CSS选择器。如果浏览器不支持CSS选择器,可以使用Sizzle。IE6,7和FireFox3.0就是使用Sizzle作为CSS查询引擎。注意不是所有浏览器都使用同样的CSS选择器表达式,有些CSS可能只在某一个版本中生效。示例:如何使用该方法定位元素milkcheeseWebElement cheese = driver.findElement(By.cssSelector(#food span.dairy.aged);By XPath当有需要时,WebDriver

19、还可以使用浏览器自带的XPATH。对于那些不支持XPATH的浏览器,我们提供了WebDriver特有的实现方式。请确保熟悉XPATH在不同的引擎中的区别,否则会导致一些不可预料的问题。Driver大小写敏感属性值是否可见是否支持XAPTHHtmlUnit Driver仅识别小写可见是IE Driver仅识别小写可见否FireFox Diver大小写不敏感可见是上面的表格有一些抽象,让我们来看个例子List inputs = driver.findElements(By.xpath(/input);匹配结果如下XPATH表达式HtmlUnit DriverFireFox DriverIE Dri

20、ver/input122/INPUT020有些标签的属性有默认值,这种情况下不指定属性值则匹配默认值。比如,input标签type属性默认为text。使用XPATH的首要原则就是不要忽略这些隐藏的实现。使用JavaScript只要返回的是一个Web Element,你还可以使用任意的JS代码查找Web元素,根据查询结果会自动修改为一个WebElement对象。一个简单的使用jQuery的例子:WebElement element = (WebElement) (JavascriptExecutor)driver).executeScript(return $(.cheese)0);查找页面中每

21、个label的所有Input元素:List labels = driver.findElements(By.tagName(label);List inputs = (List) (JavascriptExecutor)driver).executeScript( var labels = arguments0, inputs = ; for (var i=0; i labels.length; i+) + inputs.push(document.getElementById(labelsi.getAttribute(for); return inputs;, labels);7.3模拟用户

22、输入行为我们已经演示了在文本框输入文本内容,其他Web元素应该如何操作呢?你可以触发CheckBox的某个选项,也可以选择Select的某个选项。WebDriver处理Select元素也很简单。WebElement select = driver.findElement(By.tagName(select);List allOptions = select.findElements(By.tagName(option);for (WebElement option : allOptions) System.out.println(String.format(Value is: %s, opti

23、on.getAttribute(value); option.click();上面的例子,将选择Web页面中的第一个Select元素,并将循环打印出选项的取值并单击选项。或许你已经注意到,使用这个方法并不是最有效的。WebDriver提供一个“Select”类,这个类的方法更适合于处理上述这种场景。Select select = new Select(driver.findElement(By.tagName(select);select.deselectAll();select.selectByVisibleText(Edam);上面的例子,首先去除选定第一个选项的焦点,然后选中取值为Eda

24、m的选项。一旦你完成了所有表单字段的输入,下一步就是提交表单。一种方法就是找到Web页面中的Submit按钮并单击:driver.findElement(By.id(submit).click();作为另一种选择,WebDriver的Element类有一个更加便利的方法sublmit。如果你对表单中的某个Element使用该方法,WebDriver将会走读其所在的DOM对象,直到找到其所属的表单,并提交。如果该Element并不在某个表单中,将会抛出异常NoSuchElementException。element.submit();7.4在windows和frames间切换有些Web程序包含许

25、多Frame和窗口,WebDriver提供switch to方法在这之间进行切换:driver.switchTo().window(windowName);所有传输给WebDriver的指定将被传输给切换后的窗口。如何直到窗口的名称呢?查看JS并打开该窗口就可以了:Click here to open a new window作为另一种选择,你可以使用一个“窗口句柄”传递给switchTo().window()方法。根据此方法,将会使用迭代器遍历所有打开的窗口:for (String handle : driver.getWindowHandles() driver.switchTo().wi

26、ndow(handle);你也可以在Frame之间切换(或者进入Frame):driver.switchTo().frame(frameName);你还可以根据路径使用Frame的子Frame,而且可以通过索引定位Frame。driver.switchTo().frame(frameName.0.child);以上方法将切换到名称为“frameName”的Frame的第一个子Frame,所有Frame都是Web页面的最顶端开始计数。7.5弹出框Selenium2.0 beta1版本,我们提供方法获取弹出框。在你触发弹出框的操作后,你可以用一下方法进入弹出框:Alert alert = driver.swit

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1