User Tools

Site Tools


selenium

Table of Contents

简介

*__ selenium2是在其一代的基础上,结合了webdriver,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。。__\ \

配置

selenium2+java:selenium2+java+idea配置\ selenium2+python:selenium2+python配置\ \

入门

学习使用selenium2很简单,你需要掌握:\ * 网页元素捕捉\ * 浏览器控制\ * 简单元素操作\ * 各种键盘事件\ * 各种鼠标事件\ * 获得验证信息\ * 设置元素等待\ 以上教程:selenium2使用入门\

当你要尝试真正使用它时 注意\ * 对业务需求本身的的足够了是所有自动化测试(包括大部分非自动化测试)的前提。 * 只有正确定位到相应的页面,才可以任意操作页面内的元素。不同的web程序前端结构稍有差异,所以需要清楚的了解前端页面的布局结构。 当你无法捕捉到元素时,第一反应应该检查是否定位到了相应的页面内。//具体参考://iframe页面定位详解 \ * 捕捉元素时首选 by.id name class,如果没有这个三个属性,可以尝试取得前端修改权限,自己加上去,万不得已时可以使用xpath,css等。当前端页面结构改变时这些捕捉方式就有失效的风险。\ * 对页面元素的操作方式比你预想的更加广泛,包括键盘上的所有输入按键和基本控制按键(空格 退格 回车……),鼠标的双次点击,悬停,滚轮等……\ ====== 设计 ==== 设计测试代码的过程,本质上类似软件开发的过程,最关键的是最初的需求分析,以下若干条经验之谈希望为你提供一些参考:\ * 针对性的设计:大部分情况下,最初试图将自动化测试代码://涵盖系统的所有功能模块// 或者 //只测试系统的单个模块// 的想法都是不合理的,最初的需求设计应该从业务的角度出发,将一个系统中的某个业务涵盖的若干个模块提取 抽象 组合起来,让测试代码为一串单独的业务进行服务,业务过程中人工键盘输入操作 机械性重复操作越多,自动化测试的价值越大。 * 有选择性的抽象:如果一个业务中的各个测试模块内的功能被紧密封装,相互之间关联性很低(高内聚,低耦合)。此时适合将各个功能和重复性操作层层封装,甚至各个模块自由组合,减少工作量,提高代码的可维护性。如果一个业务中的各个测试模块功能数据相互关联,此时过分的抽象会耗掉大量的时间和精力,大幅度增加设计难度。 * 精力的取舍:自动化测试设计永远先考虑 //代码设计的精力投入和回报比例//,再考虑 //具体的代码设计//。 * 自动化测试的价值:目前来看,自动化测试远没有想象的那样智能,大多数情况下无法指望它能代替人完成精准、详尽的测试,但是//它可以在你完成精准、详尽的测试的过程中 代替你完成那些大量枯燥费时的机械性操作//。

selenium.txt · Last modified: 2023/03/08 16:09 by xujianglong