乙醇老师的力作57页详细讲解—webdriver实用指南java版本_第1页
乙醇老师的力作57页详细讲解—webdriver实用指南java版本_第2页
乙醇老师的力作57页详细讲解—webdriver实用指南java版本_第3页
乙醇老师的力作57页详细讲解—webdriver实用指南java版本_第4页
乙醇老师的力作57页详细讲解—webdriver实用指南java版本_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、webdriver有用指南java版本名目如下启动扫瞄器场景在用法webdriver进行测试时启动扫瞄器无疑是必需的前置工作。代码 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class StartBrowser public static void main(String args) WebDriver dr = new ChromeDriver(); 关闭扫瞄器场景在脚本运行完毕或者测试代码结束的时候关闭扫瞄器是格外自然的事情,就像在吃完饭后就把餐桌

2、整理洁净一样。关闭扫瞄器有两种方式:close方法quit方法close方法关闭当前的扫瞄器窗口,quit方法不仅关闭窗口,还会彻底的退出webdriver,释放与driver server之间的连接。所以简洁来说quit是更加彻底的close,quit会更好的释放资源,适合强迫症和完善主义者。代码 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CloseBrowser public static void main(String args)

3、WebDriver dr = new ChromeDriver(); System.out.println(browser will be closed); dr.quit(); System.out.println(browser is closed); 扫瞄器最大化场景当我们在测试中用法一些基于图像和坐标的挂念测试工具时,我们就会需要使扫瞄器在每次测试时保存最大化,以便在同一辨别率下进行图像比对和坐标点选。举例来说,假如在webdriver测试中用法了sikuli来对flash插件进行操作的话,把扫瞄器最大化无疑是一个比较简洁的保证辨别率统一的解决方案。代码 import org.open

4、qa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class Maximize public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); System.out.println(maximize browser); dr.manage().window().maximize(); Thread.sleep(200

5、0); System.out.println(browser will be close); dr.quit(); 设置扫瞄器大小场景设置扫瞄器窗口的大小有下面两个比较常见的用途:在统一的扫瞄器大小下运行用例,可以比较简洁的跟一些基于图像比对的工具进行结合,提升测试的机敏性及普遍适用性。比如可以跟sikuli结合,用法sikuli操作flash;在不同的扫瞄器大小下访问测试站点,对测试页面截图并保存,然后观看或用法图像比对工具对被测页面的前端样式进行评测。比如可以将扫瞄器设置成移动端大小(320 x480),然后访问移动站点,对其样式进行评估;代码将扫瞄器调整成移动端大小,然后访问移动站点,对

6、移动站点的样式进行评估。 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CloseBrowser public static void main(String args) WebDriver dr = new ChromeDriver();dr.manager().Window().setSize(newDimension(600,800) System.out.println(browser will be closed); dr.quit(

7、); System.out.println(browser is closed); 争辩webdriver供应了很多调整扫瞄器窗口的接口,比如move_to(移动窗口),position(设置或猎取扫瞄器的位置)。在一般状况下这些功能并不常用。访问链接情景web UI测试里最简洁也是最基本的事情就是访问1个链接了。webdriver的api里有2种访问url的方式,分别是get和navigate.to方法。一般状况下建议用法get,由于其字母比较少,不太简洁出错。代码 import org.openqa.selenium.WebDriver; import org.openqa.seleniu

8、m.chrome.ChromeDriver; public class Get public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String url = ; System.out.printf(now accesss %s n, url); dr.get(url); Thread.sleep(2000); System.out.println(browser will be close); dr.quit

9、(); 争辩navigate方法实际上会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等。打印当前页面的title及url情景测试中,访问1个页面然后推断其title是否符合预期是很常见的1个用例,所谓用例不够,title来凑就是这个道理。更具体一点,假设1个页面的title应当是hello world, 那么可以写这样的一个用例:访问该页面,猎取该页面的title,推断猎取的值是否等于hello world。猎取当前页面的url也是格外重要的一个操作。在某些状况下,你访问一个url,这时系统会自动对这个url进行跳转,这就是所谓的重定向。一般测试重定向的方法是访问

10、这个url,然后等待页面重定向完毕之后,猎取当前页面的url,推断该url是否符合预期。另外的一个常见的测试场景是提交了一个表单,假如表单内容通过了验证,那么则会跳转到一个新页面,假如未通过验证,则会停留在当前页面,此时猎取当前页面的url则可以忧虑我们推断表单提交的跳转是否符合预期。更具体一点,假如你在测试一个登陆页面,输入正确的登陆信息后,会跳转到系统首页。猎取跳转后的url然后推断其是否与系统首页的url相符将是一个很不错的用例。代码 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.Chrom

11、eDriver; public class TitleAndUrl public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String url = ; System.out.printf(now accesss %s n, url); dr.get(url); Thread.sleep(2000); System.out.printf(title of current page is %sn, dr.getTi

12、tle(); System.out.printf(url of current page is %sn, dr.getCurrentUrl(); System.out.println(browser will be close); dr.quit(); 前进和后退场景说实话,这两个功能一般不太常用。所能想到的场景或许也就是在几个页面间来回跳转,省去每次都get url。代码 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ForwardAndBa

13、ck public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String firstUrl = ; System.out.printf(now accesss %s n, firstUrl); dr.get(firstUrl); Thread.sleep(1000); String secondUrl = ; System.out.printf(now accesss %s n, secondUrl); dr.

14、get(secondUrl); Thread.sleep(1000); System.out.printf(now back to %s n, firstUrl); dr.navigate().back(); Thread.sleep(1000); System.out.printf(forward to %s n, secondUrl); dr.navigate().forward(); Thread.sleep(1000); System.out.println(browser will be close); dr.quit(); 简洁的对象定位场景测试对象的定位和操作是webdriver

15、的核心内容,其中操作又是建立在定位的基础之上,因此对象定位就更加显得重要了。定位对象的目的一般有下面几种操作对象获得对象的属性,如获得测试对象的class属性,name属性等等获得对象的text获得对象的数量webdriver供应了一系列的对象定位方法,常用的有以下几种idnameclass namelink textpartial link texttag namexpathcss selector代码html代码 form.html Form simple login form Email Password Remember me Sign in register java代码 simpl

16、e_locate.java import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.JavascriptExecutor; public class SimpleLocate public static void main(String args)

17、 throws InterruptedException WebDriver dr = new ChromeDriver(); File file = new File(src/form.html); String filePath = file:/ + file.getAbsolutePath(); System.out.printf(now accesss %s n, filePath); dr.get(filePath); Thread.sleep(2000); / by id dr.findElement(By.id(inputEmail).click(); Thread.sleep(

18、1000); / by name dr.findElement(B(password); Thread.sleep(1000); / by tagname String classOfForm = dr.findElement(By.tagName(form).getAttribute(class); System.out.printf(%sn, classOfForm); Thread.sleep(1000); / by link text WebElement link = dr.findElement(By.linkText(register); (JavascriptExecutor)

19、dr).executeScript($(arguments0).fadeOut().fadeIn(), link); Thread.sleep(1000); / by partial link test WebElement sameLink = dr.findElement(By.partialLinkText(reg); (JavascriptExecutor)dr).executeScript($(arguments0).fadeOut().fadeIn(), sameLink); Thread.sleep(1000); / by css selector WebElement div

20、= dr.findElement(By.cssSelector(.controls); (JavascriptExecutor)dr).executeScript($(arguments0).fadeOut().fadeIn(), div); Thread.sleep(1000); / by xpath dr.findElement(By.xpath(/html/body/form/div3/div/label/input).click(); Thread.sleep(1000); System.out.println(browser will be close); dr.quit(); 争辩

21、上面例子里由于html文件中引用了jquery,所以在执行js时可以用法jquery的$()及fadeIn()等方法。假如你测试的页面没用包含jquery的话,这些方法是无效的。定位一组对象场景从上一节的例子中可以看出,webdriver可以很便利的用法findElement方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要用法findElements方法。定位一组对象一般用于以下场景:批量操作对象,比如将页面上全部的checkbox都勾上先猎取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上全部的checkbox,然后选择最终一个代码checkbo

22、x.html Checkbox checkbox checkbox1 checkbox2 checkbox3 radio find_element.java import java.io.File; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.sel

23、enium.JavascriptExecutor; public class SimpleLocate public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); File file = new File(src/checkbox.html); String filePath = file:/ + file.getAbsolutePath(); System.out.printf(now accesss %s n, filePath); dr.get(fi

24、lePath); Thread.sleep(1000); / 选择全部的checkbox并全部勾上 List checkboxes = dr.findElements(By.cssSelector(inputtype=checkbox); for(WebElement checkbox : checkboxes) checkbox.click(); dr.navigate().refresh(); / 打印当前页面上有多少个checkbox System.out.printf(%dn, checkboxes.size(); / 选择页面上全部的input,然后从中过滤出全部的checkbox并

25、勾选之 List inputs = dr.findElements(By.tagName(input); for(WebElement input : inputs) if(input.getAttribute(type).equals(checkbox) input.click(); / 把页面上最终1个checkbox的勾给去掉 List allCheckboxes = dr.findElements(By.cssSelector(inputtype=checkbox); allCheckboxes.get(allCheckboxes.size() - 1).click(); Thread.sleep(1000); System.out.println(browser will be close); dr.quit(); 争辩checkbox.html必需与find_elments.rb在同一级名目下层级定位场景在实际的项目测试中,经常会有这样的需求:页面上有很多个属性基本相同的元素,现在需要具体定位到其中的一个。由于属性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论