logo资料库

乙醇老师的力作57页详细讲解—webdriver实用指南java版本.docx

第1页 / 共56页
第2页 / 共56页
第3页 / 共56页
第4页 / 共56页
第5页 / 共56页
第6页 / 共56页
第7页 / 共56页
第8页 / 共56页
资料共56页,剩余部分请下载后查看
启动浏览器
场景
代码
关闭浏览器
场景
代码
浏览器最大化
场景
代码
设置浏览器大小
场景
代码
讨论
访问链接
情景
代码
讨论
打印当前页面的title及url
情景
代码
前进和后退
场景
代码
简单的对象定位
场景
代码
html代码 form.html
java代码 simple_locate.java
讨论
定位一组对象
场景
代码
checkbox.html
find_element.java
讨论
层级定位
场景
代码
level_locate.html
level_locate.java
讨论
操作测试对象
场景
代码
operate_element.html
operate_element.java
send keys模拟按键输入
场景
代码
send_keys.html
send_keys.java
处理button group
场景
代码
button_group.html
button_group.java
讨论
处理button dropdown
场景
代码
button_dropdown.html
button_dropdown.java
处理navs
场景
代码
navs.html
navs.java
处理面包屑
场景
代码
breadcrumb.html
breadcrumb.java
处理对话框
场景
代码
modal.html
modal.java
获取测试对象的属性及内容
场景
代码
attribute.html
attribute.java
获取测试对象的css属性
场景
代码
css.html
css.java
获取测试对象的状态
场景
代码
status.html
status.java
讨论
form的操作
场景
代码
form.html
form.rb
Form.java
执行js
场景
代码
js.html
js.java
处理alert/confirm/prompt
场景
代码
alert.html
alert.java
wait
场景
代码
wait.html
wait.java
定位frame中的元素
场景
代码
frame.html
inner.html
frame.java
讨论
action
场景
代码
讨论
上传文件
场景
代码
upload_file.html
upload_file.java
下载
场景
代码
超时设置
场景
代码
Remote Webdriver
场景
安装
启动driver
使用watir-webdriver启动driver
java版本
python版本
cookie
场景
代码
cookie.java
webdriver 实用指南 java 版本 目录如下  启动浏览器  关闭浏览器  浏览器最大化  设置浏览器大小  访问链接  打印当前页面的 title 及 url  前进和后退  简单的对象定位  定位一组对象  层级定位  操作测试对象  send keys 模拟按键输入  处理 button group  处理 button dropdown  处理 navs  处理面包屑  处理对话框新式的模态窗口  获取测试对象的属性及内容  获取测试对象的 css 属性
 获取测试对象的状态  处理表单元素  执行 js  处理 alert/confirm/prompt  wait  定位 frame 中的元素  action  上传文件  下载  超时设置  Remote Webdriver  cookie 与自动登陆 启动浏览器 场景 在使用 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(); } }
关闭浏览器 场景 在脚本运行完毕或者测试代码结束的时候关闭浏览器是非常自然的事情,就像在 吃完饭后就把餐桌收拾干净一样。 关闭浏览器有两种方式:  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) { WebDriver dr = new ChromeDriver(); System.out.println("browser will be closed"); dr.quit(); System.out.println("browser is closed"); } } 浏览器最大化 场景
当我们在测试中使用一些基于图像和坐标的辅助测试工具时,我们就会需要使浏 览器在每次测试时保存最大化,以便在同一分辨率下进行图像比对和坐标点选。 举例来说,如果在 webdriver 测试中使用了 sikuli 来对 flash 插件进行操作的话, 把浏览器最大化无疑是一个比较简单的保证分辨率统一的解决方案。 代码 import org.openqa.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(2000); System.out.println("browser will be close"); dr.quit(); } } 设置浏览器大小 场景 设置浏览器窗口的大小有下面两个比较常见的用途:  在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的 工具进行结合,提升测试的灵活性及普遍适用性。比如可以跟 sikuli 结合, 使用 sikuli 操作 flash;
 在不同的浏览器大小下访问测试站点,对测试页面截图并保存,然后观察 或使用图像比对工具对被测页面的前端样式进行评测。比如可以将浏览器 设置成移动端大小(320x480),然后访问移动站点,对其样式进行评估; 代码 将浏览器调整成移动端大小,然后访问移动站点,对移动站点的样式进行评估。 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CloseBrowser { public static void main(String[] args) { WebDriver dr = new ChromeDriver(); System.out.println("browser will be closed"); dr.quit(); 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.selenium.chrome.ChromeDriver; public class Get { public static void main(String[] args) throws InterruptedException { WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String url = "http://www.baidu.com"; System.out.printf("now accesss %s \n", url); dr.get(url); Thread.sleep(2000); System.out.println("browser will be close"); dr.quit(); } } 讨论 navigate 方法实际上会产生 1 个 Navigator 对象,其封装了与导航相关的一些 方法,比如前进后退等。 打印当前页面的 title 及 url 情景 测试中,访问 1 个页面然后判断其 title 是否符合预期是很常见的 1 个用例,所 谓用例不够,title 来凑就是这个道理。更具体一点,假设 1 个页面的 title 应该 是'hello world', 那么可以写这样的一个用例:访问该页面,获取该页面的 title, 判断获取的值是否等于'hello world'。 获取当前页面的 url 也是非常重要的一个操作。在某些情况下,你访问一个 url, 这时系统会自动对这个 url 进行跳转,这就是所谓的'重定向'。一般测试重定向
的方法是访问这个 url,然后等待页面重定向完毕之后,获取当前页面的 url,判 断该 url 是否符合预期。另外的一个常见的测试场景是提交了一个表单,如果表 单内容通过了验证,那么则会跳转到一个新页面,如果未通过验证,则会停留在 当前页面,此时获取当前页面的 url 则可以帮助我们判断表单提交的跳转是否符 合预期。更具体一点,假如你在测试一个登陆页面,输入正确的登陆信息后,会 跳转到系统首页。获取跳转后的 url 然后判断其是否与系统首页的 url 相符将是 一个很不错的用例。 代码 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class TitleAndUrl { public static void main(String[] args) throws InterruptedException { WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String url = "http://www.baidu.com"; System.out.printf("now accesss %s \n", url); dr.get(url); Thread.sleep(2000); System.out.printf("title of current page is %s\n", dr.getTitle()); System.out.printf("url of current page is %s\n", 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 ForwardAndBack { public static void main(String[] args) throws InterruptedException { WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String firstUrl = "http://www.baidu.com"; System.out.printf("now accesss %s \n", firstUrl); dr.get(firstUrl); Thread.sleep(1000); String secondUrl = "http://www.soso.com"; System.out.printf("now accesss %s \n", secondUrl); dr.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 的核心内容,其中操作又是建立在定位的 基础之上,因此对象定位就越发显得重要了。 定位对象的目的一般有下面几种  操作对象
分享到:
收藏