对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
分享到:
相关推荐
白色简洁风格的学术交流会议源码下载.zip
内容概要:本文提出了利用交变电流场测量(ACFM)技术对水下结构中的缺陷进行可视化和智能识别的方法。通过对缺陷引起畸变磁场的分析,开发了梯度成像算法作为图像预处理方法,突显了缺陷的视觉形态。实验验证了梯度成像算法的有效性,并利用卷积神经网络(CNN)深度学习算法识别预处理后的灰度图样本。实验结果显示,电流扰动理论澄清了特征信号与缺陷形态之间的关系,单裂纹、不规则裂纹和腐蚀等缺陷可以被智能识别和准确评估。 适合人群:从事水下结构检测的研究人员和技术人员,以及对非破坏性检测技术感兴趣的工程领域人士。 使用场景及目标:① 海洋钻井平台、管道、海底油气处理设施等水下结构的缺陷检测;② 利用交变电流场测量技术和图像处理技术提高缺陷识别的准确性和智能化程度。 其他说明:本文不仅提出了交变电流场测量技术的新方法,还通过实验证明了这些方法的有效性,为实际应用提供了技术支持。
Neck Deep - In Bloom [mqms2].mgg2.flac
基于ESO的永磁同步电机无感FOC 1.采用线性扩张状态观测器(LESO)估计电机反电势,利用锁相环从反电势中提取位置和转速信息,从而实现无位置传感器控制; 2.提供算法对应的参考文献和仿真模型。 购买赠送PMSM控制相关电子资料。 仿真模型纯手工搭建,不是从网络上复制得到。 仿真模型仅供学习参考。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
三相逆变 单相 三相逆变器 SPWM ---stm32主控(输入、输出具体可根据需要设定),本逆变器可以二次开发。 本内容只包括 逆变程序,实现变频(0~100Hz)、变压调节,均有外接按键控制(使用C语言实现)。
NSConditionException如何解决.md
白色简洁风格的房产交易中心企业网站源码下载.zip
水果分拣机15可编辑全套技术资料100%好用.zip
内容概要:本文为《1+X移动互联网应用开发初级》课程的期中考试试卷解析。解析涵盖了Java开发入门基础知识,主要包括Android中SQLite数据库操作、ContentProvider使用、BroadcastReceiver、Intent传递数据、Activity生命周期、Service生命周期管理、文件操作模式、通知管理、JSON和XML解析、权限管理等内容。通过对各个题目的解析,帮助学生更好地理解和掌握移动互联网应用开发的基础知识和技术。 适合人群:正在学习《1+X移动互联网应用开发初级》课程的学生,尤其是网络21班的学生。 使用场景及目标:①帮助学生理解和掌握Android开发的基础知识点;②提高学生的实际操作能力,尤其是在期中考试后的查漏补缺。 阅读建议:建议学生在阅读解析时,结合教材和实践操作,加深对各知识点的理解。同时,可以通过模拟题进行练习,巩固学习成果。
自动送料切割机sw可编辑全套技术资料100%好用.zip
ClosedChannelException(解决方案).md
长焊缝打磨机step全套技术资料100%好用.zip
从给定的文件信息来看,核心知识点聚焦于内部审计业务的实施,特别是内部审计师如何遵循规范、标准和最佳实践来进行审计工作。以下是对关键知识点的深入解析: ### 内部审计业务实施的关键要素 #### 理解内部审计业务全过程 内部审计业务覆盖了从计划、实施、报告到后续跟踪的全过程,要求内部审计师具备全面的专业技能和严谨的工作态度。这一过程旨在确保组织的风险管理、控制和治理机制的有效性。 #### 核心业务类型 内部审计主要包括确认和咨询两大业务类型。确认服务侧重于评估组织的控制和风险管理程序,而咨询服务则更注重提供改进和优化现有流程的建议。 ### 实施内部审计的依据与标准 #### IIA职业实务框架 - **标准与道德规范**:包括内部审计实务标准和职业道德规范,前者指导内部审计活动的执行,后者强调审计师的公正、客观、保密和胜任能力。 - **实务公告**:提供非强制性的指导,涉及内部审计的特定操作流程和程序。 - **发展与实务帮助**:涵盖各种专业资源,如研究资料、书籍和培训课程,为审计人员提供深入的学习和支持。 #### 法律、法规和其他标准 除了IIA框架外,内部审计还应考虑适用
IncompatibleClassChangeError(解决方案).md
html渲染器,粘贴html代码到这个渲染器即可渲染出对应的效果
白色简洁风格的时尚宝马老爷车企业网站模板下载.zip
白色宽屏风格的贸易商务企业网站模板.zip
白色宽屏风格的旅游路线推荐整站网站源码下载.zip
白色简洁风格的社交博客网站后台系统源码下载.zip
实惠 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculater extends JFrame implements ActionListener。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。