对Web进行自动化测试,我们首先想象一个简单的场景,来看看需要测试哪些东西:
a. 元素定位:无论使用XPath, Dom还是CSS,需要简单方便的API定位元素,可以延时等待元素出现;
b. 交互操作:包括文本框、单选框、多选框、按钮、表格单元的输入或者点击;
c. 页面操作:页面切换和关闭、对话框切换和关闭;
d. 其他要求:对主流浏览器测试的支持、对JavaScript的支持等。
说起Web自动化测试,首先想到的就是Selenium。其实WebDriver就是基于Selenium的一个自动化测试类库,但它不再是运行在浏览器内的JS程序,而是自己可以控制浏览器。旨在改进Selenium1.0中出现的诸多问题,并且提供了非常易用、可读性很强的API。
1. 简单例子
我们通过一个例子来初步认识一下WebDriver。简单起见,我们通过WebDriver连接到google网站上,通过关键词进行搜索,并且验证搜索结果。
代码如下:
package selenium;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import static junit.framework.Assert.assertNotNull;
public class WebDriverTest {
private WebDriver page;
@Before
public void before() {
page = new HtmlUnitDriver();
}
@Test
public void testHasAnImageSearchPage() throws Exception {
page.get("http://www.google.cn");
WebElement searchBox = page.findElement(By.name("q"));
searchBox.sendKeys("JavaEye");
WebElement subBtn = page.findElement(By.name("btnG"));
subBtn.submit();
WebElement result = page.findElement(By.linkText("http://www.iteye.com"));
assertNotNull(result);
}
}
2. HamcrestWebDriverTestCase
除了上面的写法,WebDriver还根据Hamcrest类库,利用它优秀的Matcher API,另外提供了的基类:HamcrestWebDriverTestCase,从该基类集成的测试用例,更易读。
代码如下:
package selenium;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.lift.HamcrestWebDriverTestCase;
import static org.hamcrest.Matchers.equalTo;
import static org.openqa.selenium.lift.Finders.div;
import static org.openqa.selenium.lift.Finders.textbox;
import static org.openqa.selenium.lift.find.InputFinder.submitButton;
import static org.openqa.selenium.lift.find.LinkFinder.link;
import static org.openqa.selenium.lift.match.AttributeMatcher.attribute;
public class HamcrestTest extends HamcrestWebDriverTestCase {
@Override
protected WebDriver createDriver() {
return new HtmlUnitDriver();
}
@Test
public void testHasAnImageSearchPage() throws Exception {
goTo("http://www.google.cn");
type("JavaEye", into(textbox().with(attribute("name", equalTo("q")))));
clickOn(submitButton().with(attribute("name", equalTo("btnG"))));
assertPresenceOf(link("http://www.iteye.com"));
}
}
3. WebDriver, Web Driver
WebDriver有以下几种浏览器驱动器:
HtmlUnit Driver:
速度最快;平台独立;支持JavaS次日平台;
不是图形化的,即你无法在浏览器中看到页面元素被点击的过程;
其JavaScript引擎是Rhino,与主流浏览器的均不同(Chrome V8, Safari Nitro, FF TraceMonkey...),因此JavaScript执行结果可能稍微不同;
而另外三种FireFox Driver、Internet Explorer Driver和Chrome Driver都可在真正的浏览器中运行,因此是可视化的;并且支持JavaScript;只是运行速度较慢;
4. 更多的API
继续尝试下去,会遇到一些常用的API,主要包括:
Finder:在某些时候可以作为XPath查找方式的替代,使用比较方便;
Matcher:就是Hamcrest类库提供的Matcher API;
页面、frame等的切换、Cookie等等。
5. 局限?
a. WebDriver支持XPath的方式进行元素定位,可惜现在还不支持常用的CSS Selector定位。
b. WebDriver对javascript弹出的对话框暂时还不支持,不过应该很快了吧。
6. 总结:
由于提供了良好的API,解决了很多Selenium1.0的问题,它被即将发布的Selenium 2.0集成了进去,因此还是很值得一试。
参考资料:
1. Selenium 2.0 and WebDriver
2.
Issue
24
:
Allow use of CSS selectors
3. Selenium FAQ
分享到:
相关推荐
本文档《Web自动化测试之Webdriver(TestNG).pdf》详细介绍了如何配置环境和编写使用Selenium WebDriver和TestNG的测试用例。以下总结了文档中提到的关键知识点: 1. 环境配置 - 安装Eclipse开发环境和Java开发工具...
较全面地介绍了selenium webdriver的用法,对完善代码架构、实现自动化测试项目化有不小帮助
Python Webdriver 是一个流行的自动化测试框架,它可以模拟用户的操作来测试 Web 应用程序。本文将详细介绍 Python Webdriver 自动化测试实战的知识点。 测试模型 Python Webdriver 提供了两种测试模型:线性测试...
本文将深入探讨如何使用Python结合Selenium和Pytest构建一个强大的Web自动化测试框架,实现功能巡检、生成测试报告以及通过邮件发送测试结果。 首先,Python是一种广泛应用于测试领域的编程语言,其简洁明了的语法...
《零成本实现Web自动化测试-基于Selenium和Bromine》是温素剑撰写的一本技术书籍,专注于介绍如何在不产生额外费用的情况下,利用开源工具进行高效的Web自动化测试。书中的内容涵盖了一系列与Web自动化测试相关的...
将Python与Selenium WebDriver结合起来,可以创建功能强大的Web自动化测试工具。 在介绍“selenium+webdriver+python自动化测试”时,首先要了解以下几个核心知识点: 1. Selenium框架的组成:Selenium框架主要由...
总之,ChromeDriver是Web自动化测试中的重要工具,通过结合Selenium WebDriver,我们可以高效地实现对Chrome浏览器的自动化测试,从而提高测试覆盖率和软件质量。在实际应用中,不断学习和优化测试策略,可以更好地...
在本篇文章中,我们将详细介绍如何配置Selenium与WebDriver的环境,以便开始进行Web自动化测试。 首先,我们需要安装Java Development Kit (JDK)。因为Selenium主要使用Java编写,所以确保你的系统上已经安装了JDK...
总结来说,"web自动化测试"涉及到使用C#和Selenium WebDriver来自动化测试Google翻译服务的功能。理解和掌握这些工具和技术对于提高Web应用的测试效率和质量至关重要。同时,对内部跳转机制的理解也是编写有效测试...
Selenium是一个开源的Web自动化测试工具,它支持多种编程语言,包括Python。Python作为简洁易懂的脚本语言,非常适合编写自动化测试脚本。Selenium与Python的结合使得测试代码编写更为简单,且易于维护。 在描述中...
Web自动化测试框架搭建是现代软件开发过程中的重要环节,它能显著提高测试效率,减少人工错误,确保产品质量。本文将详细介绍自动化测试理念以及如何构建一个分层的自动化测试框架,并结合持续集成(CI)进行管理。 ...
在进行Web自动化测试的过程中,设计出既简单又健壮的测试模式是一项重要任务。为了实现这一目标,测试人员需要掌握一些关键技术和方法,如使用Selenium工具、合理处理Ajax和动画效果,以及如何有效地等待异步操作...
Web自动化测试是现代软件开发中不可或缺的一环,它极大地提高了测试效率,减少了手动测试的重复性和错误率。本文将深入探讨Web自动化测试的原理、工程实践以及常用的自动化测试框架,并结合具体的实战用例进行讲解。...
自动化测试:Selenium webdriver学习笔记 C#版 在本篇笔记中,我们将讨论 Selenium webdriver 的自动化测试中的对象定位方法。对象定位是自动化测试中非常重要的一步骤,它决定了我们的测试脚本是否能够正确地找到...
1. **Selenium WebDriver**: Selenium是Web UI自动化测试中的核心工具,它提供了WebDriver接口,允许我们通过编写Python代码来控制浏览器,模拟用户的交互行为。在本章中,我们将学习如何安装和配置Selenium ...
本文将深入探讨如何以“零成本”实现Web自动化测试,主要基于两个强大的开源工具——Selenium和Bromine。这两个工具对于初学者和专业人士来说都是理想的选择,因为它们不仅功能强大,而且无需额外的经济投入。 首先...
在Web自动化测试中,WebDriver扮演着核心角色。你将学习如何安装和配置WebDriver,以及如何使用它来启动和控制浏览器。 三、Selenium WebDriver框架 Selenium是一个强大的Web测试框架,提供了多种语言的WebDriver...
《Selenium2 Python 自动化测试实战》是一本专注于使用Python和Selenium2进行Web自动化测试的专业书籍。这本书详尽地介绍了如何利用Selenium2这个强大的工具,配合Python语言,来构建高效、可靠的自动化测试框架,以...
Web UI自动化测试是现代软件开发过程中的重要环节,它能够显著提高测试效率,减少人工...通过阅读"Web自动化测试黑马程序员.pptx",你将更深入地了解这些概念,并可能学习到更多关于如何在实际项目中应用它们的技巧。