标签:
Selenium 是这些年非常流行的Web UI 自动化测试工具, 很多同学学习并使用过Selenium。但是一些问题仔细想来是不是让你觉得有些困惑,比如说Selenium 到底是什么东西,为什么能支持多语言编程,到底是怎么驱动浏览器工作的……不要着急,在这篇文章中我们会一一探讨这些问题
Selenium 是什么,包含哪些组成部分 (蓝色字体为selenium 学习过程中经常会碰到的名词):
一般来说如果没有明确指明 Selenium 2.0 或 Web Driver而单说Selenium 的话,是指 Selenium 1.0
一般人们如果说Web Driver, 其实是在说Selenium 2.0 又称 Selenium Web Driver。但在这里我们先说说Web Driver 本身,或者说一开始的Web Driver是什么:
(或简称Web Driver,注意啦,现在你周围的小伙伴如果说起Web Driver,基本就是在说这个啦):
正所谓成也萧何败也萧何,正是由于以上第三几第四条特点导致了selenium 的致命缺点。
Web Driver工作步骤 (主要篇幅放在Selenium 2.0, 故这里不做详细描述):...
Selenium 1.0 和Web Driver 各有优劣,因此我们需要一款工具,它能够把两者的优点集合起来,这就是我们下面介绍的selenium 2.0,即selenium Webdriver
Selenium WebDriver=Selenium 1.0 + WebDriver 也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。
以下引用框内部分来自Selenium 官网http://www.seleniumhq.org(笔者翻译.
Selenium standalone server 作为一个代理服务器工作在测试脚本和目标浏览器对应的driver 之间/The standalone Selenium Server acts as a proxy between your script and the browser-specific drivers.The server may be used when running locally, but it‘s not recommend as it introduces an extra hop for each request and will slow things down
WebDriver 是一款web 应用的自动化测试工具。他致力于提供便于理解和探索的有好的API,从而让你的测试变得易读且易维护。
2. WebDriver 是自动化测试框架吗?
不是。
WebDriver 没有绑定到任何特定的测试框架。所以它能很好地在单元测试中或普通的主函数中调用。
3. 有了WebDriver 为什么还需要其他的集成测试框架如RobotFramework 或 单元测试框架如 JUnit
WebDriver 不是测试框架,而是只提供Web 自动化测试API。这意味着WebDriver无法自行组织,执行测试脚本;又比如WebDriver 本身不提供一些测试脚本所需的API如 assert(),而JUnit 已有现成的API, 她们配合使用,就不用重复造轮子了
4. WebDriver 里还有selenium server吗,如果有什么场景下需要使用呢?
有。
你可以或可以不使用selenium server,这取决你想怎么使用WebDriver。如果你的浏览器和测试程序运行在同一台机器上,并且测试程序只使用 WebDriver API, 则无需使用selenium server。
以下情况适用selenium server:
你正在使用Selenium-Guid (Selenium Server 的一部分)把你的测试分布在多台物理机或虚机上
你想连接到一台安装了特定版本的浏览器的远程机器上。这个浏览器的版本在本机没有安装。
你没有使用Java bindings (i.e Python, C#, or Ruby) 但是想要使用HtmlUnit Driver (java 程序在内存中模拟出的无图形界面的浏览器)
5. 和Selenium 1.0 相比,WebDriver 是怎样驱动浏览器的呢?
Selenium 1.0 是将javascrip 代码注入浏览器,通过javascrip代码来执行命令操作浏览器。
WebDriver 通过浏览器驱动程序(如Chromedriver.exe) 直接调用浏览器的原生自动化支持。主流的浏览器对Selenium 都有大力的支持。
6. WebDriver 为什么能支持多种编程语言呢?
Selenium 官方支持多语言的language binding(相当于用不同的语言把selenium API实现了一遍),或者称client driver,或client。只要下载对应语言的language binding,就能使用你习惯和擅长的语言编写测试程序
Core bindings supported by the main project hosted on google code
7. WebDriver 支持的浏览器driver 有哪些。都有什么特点?(未完待续,将写会写一篇专门的博客用来比较总结不同driver之间的特性和区别)
8. 怎样创建一个selenium自动化测试工程 (以java 为例 和chromedriver 为例)
package drivers; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class WebDriverDemo{ public static void main(String[] args){ //创建一个WebDriver实例 WebDriver firefox = new FirefoxDriver(); //访问百度 firefox.get("http://www.baidu.com"); //找到文本框 WebElement text = firefox.findElement(By.name("wd")); //输入关键字 text.sendKeys("Selenium"); //提交搜索。WebDriver 会自动从表单中查找提交按钮并提交 text.submit(); //检查页面title System.out.println("Page title is" + firefox.getTitle()); //退出driver,关闭浏览器 firefox.quit(); } }
9. WebDriver 怎样进行元素定位
http://www.51testing.com/html/87/300987-865596.html
10. 怎么将selenium 1.0 的工程迁移到selenium webdriver,怎样兼容. (将另起篇章描述)
11. WebDriver 的并行测试实现 (将另起篇章描述)
12. Selenium 和Robot Framework 集成解决方案 (Demo)
Selenium 学习笔记---Selenium basic all in one
标签:
原文地址:http://www.cnblogs.com/lantuzi/p/4528716.html