没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
(一) Selenium2.0 VS Selenium1.0
我们已经有了 Selenium1.0 为什么还需要 Selenium2.0 呢?
Selenium1.0 不能处理一下事件:
1) 本机键盘和鼠标事件
2) 同源策略 XSS/HTTP(S)
3) 弹出框,对话框(基本身份认证,自签名的证书和文件上传/下载)
Selenium2.0 有简洁的 API,WebDriver 和 WebElement 对象,更好的抽象。且支持
多中操作系统,多语言,多浏览器。
同时 Selenium2.0 进行了架构的调整和升级:
Selenium2.0 = Selenium1.0 + WebDriver(也就是说 Selenium2.0 合并了这两个项
目)
Selenium1.0 可以使用任何编程语言,但是有个先决条件就是必须支持 HTTP 库。
Selenium1.0 起初就是一个 Javascript 库,到后面引入了 SeleniumRC。SeleniumRC 作为
一个代理服务器并且发送操作命令给 Selenium Core(javascript 代码,且为 SeleniumRC
的一部分)。SeleniumRC 从测试程序接收指令并翻译,返回测试结果给测试程序。
Selenium Core 在 client API 打开浏览器后就注入到浏览器中,然后 Selenium Core 接收测
试程序的指令,解释成 selenese 命令,在浏览器执行。
Selenium1.0 作为第一个基于 javascript 开源的 web 测试框架,迅速的得到了其他浏
览器的支持。但是和任何其他大项目一样,Selenium1.0 也不是完美的。正因为他完全是
使用 javascript 写的,这也给他带来了致命的缺陷。为了防止恶意的 javascript,所有浏览
器都加强了对 javascript 的安全策略。这样势必导致了在一些特定场景无法使用
Selenium1.0。作为一个大项目,随着时间的日积月累,Selenium1.0 的 API 变得越来也大,
也越来也复杂,导致了都不知道更好的使用它改善它。
WebDriver 项目是由 Simon Stewart 提出的,它是一个轻便简洁的自动化测试框架。
WebDriver 通过尝试不同的方法去解决 Selenium1.0 所面临的问题。不单单是使用
javascript,WebDriver 会使用任何一种更合适的机制来操作浏览器。IE 通过使用 C+
+,FF 通过使用 javascript in a XPCOM component。
通过更灵活的机制去操控浏览器,那我们就能很好的绕过浏览器 javascript 的安全限
制。当这些技术还不够用时,我们可以调用系统设备操作,尤其是当你需要一些键盘和鼠
标操作时,通过这些技术,我们可以更好的模拟用户的真实浏览器操作。
当这两个框架被合并后,一个框架的缺陷被另一个框架所弥补。WebDriver 对浏览器
的支持需要对应框架开发工程师做对应的开发;同样 Selenium 必须操作真实浏览器,但
是 WebDriver 可以 HTML unit Driver 来模拟浏览器,在内存中执行用例,更加的轻便。
Selenium1.0 解决了自动化测试中的一些常见问题,WebDriver 更好的解决了沙箱限制。
WebDriver 不支持并行,但是 Selenium Grid 解决了这个问题。
(二) WebDriver
a) WebDirver 小实例
WebDriver 是一个用来进行复杂重复的 web 自动化测试的工具。意在提供一种比
Selenium1.0 更简单易学,有利于维护的 API。它没有和任何测试框架进行绑定,所以他
可以很好的在单元测试和 main 方法中调用。一旦创建好一个 Selenium 工程,你马上会发
现 WebDriver 和其他类库一样:它是完全独立的,你可以直接使用而不需要考虑其他配置,
这个 Selenium RC 是截然相反的。
下面我们就开始进入 WebDriver 的实际应用,首先大家下载好 eclipse,还有从
selenium 官方网站下载 selenium2.0 的 jar 包和 chromedriver 的驱动文件。构建整个工程
如下模式:
现
在我
们开
始写
代码:
package demo;
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 Selenium2Example {
public static void main(String[] args) {
//
创建一个
WebDriver
实例
WebDriver driver= new FirefoxDriver();
//
访问
google
driver.get("http://www.google.com");
//
另一种访问方法
// driver.navigate().to("http://www.google.com");
//
找到文本框
WebElement element= driver.findElement(By.name("q"));
//
输入搜索关键字
element.sendKeys("Selenium");
//
提交表单
WebDriver
会自动从表单中查找提交按钮并提交
element.submit();
//
检查页面
title
System.out.println("Page title is: " + driver.getTitle());
// google
查询结果是通过
javascript
动态呈现的
.
//
设置页面等待
10
秒超时
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("Selenium");
}
});
//
显示查询结果
title
System.out.println("Page title is: " + driver.getTitle());
//
关闭浏览器
driver.quit();
}
}
b) 介绍 WebDriver 的 Drivers
WebDriver 是测试中必须要写的关键接口的名字,但是他有多种实现,包括下面:
HtmlUnit Driver
:
这是目前最快,最轻巧的实施的 WebDriver。顾名思义,这是基于
HtmlUnit。 HtmlUnit 是 Java 一个 WebBrowser 没有图形用户界面的实现。
用法:
WebDriverdriver =newHtmlUnitDiver();
例子:
package demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class DemoUseHtmlUnit {
public static void main(String[] args) {
剩余14页未读,继续阅读
AnnyChen
- 粉丝: 7
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2