User Tools

Site Tools


selenium

This is an old revision of the document!


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程序前端结构稍有差异,所以需要清楚的了解前端页面的布局结构。 当你无法捕捉到元素时,第一反应应该检查是否定位到了相应的页面内。
  • 捕捉元素时首选 by.id name class,如果没有这个三个属性,可以尝试取得前端修改权限,自己加上去,万不得已时可以使用xpath,css等。当前端页面结构改变时这些捕捉方式就有失效的风险。
  • 对页面元素的操作方式比你预想的更加广泛,包括键盘上的所有输入按键和基本控制按键(空格 退格 回车……),鼠标的双次点击,悬停,滚轮等……

设计

设计测试代码的过程,本质上类似软件开发的过程,最关键的是最初的需求分析,以下若干条经验之谈希望为你提供一些参考:

  • 针对性的设计:大部分情况下,最初试图将自动化测试代码:涵盖系统的所有功能模块 或者 只测试系统的单个模块 的想法都是不合理的,最初的需求设计应该从业务的角度出发,将一个系统中的某个业务涵盖的若干个模块提取 抽象 组合起来,让测试代码为一串单独的业务进行服务,业务过程中人工键盘输入操作 机械性重复操作越多,自动化测试的价值越大。
  • 有选择性的抽象:如果一个业务中的各个测试模块内的功能被紧密封装,相互之间关联性很低(高内聚,低耦合)。此时适合将各个功能和重复性操作层层封装,甚至各个模块自由组合,减少工作量,提高代码的可维护性。如果一个业务中的各个测试模块功能数据相互关联,此时过分的抽象会耗掉大量的时间和精力,大幅度增加设计难度。
  • 精力的取舍:自动化测试设计永远先考虑 代码设计的精力投入和回报比例,再考虑 具体的代码设计
  • 自动化测试的价值:目前来看,自动化测试远没有想象的那样智能,大多数情况下无法指望它能代替人完成精准、详尽的测试,但是它可以在你完成精准、详尽的测试的过程中 代替你完成那些大量枯燥费时的机械性操作
selenium.1517993970.txt.gz · Last modified: 2021/02/10 21:29 (external edit)