一.工具概述
Selenium的核心是用JavaScript编写的。这使得测试脚本可以在受支持的浏览器中运行。Selenium负责执行从测试脚本接收到的命令,测试脚本要么是用JavaScript编写的,要么是使用一种受支持的编程语言编写的。Selenium测试工具的起源是2004年,由一些开源爱好者编写的JavaScript测试工具不断完善而来。最终发展到现在,成为了一个非常高效强大的开源测试框架。到现在仍然有很多公司和个人在使用Selenium框架并且相当多的机构也继续为它提供支持。
二.对应流程
Selenium作为一款支持自动化测试的软件测试工具集,从本质上来说,与软件开发的流程类似,无非就是根据对软件测试的需求进行分析,设计出良好的测试用例,在设计出来的测试用例的基础之上,编码自动化测试的脚本,然后进行测试,对测试出来的结果进行分析,最后还要对测试脚本进行维护。具体流程如下:
分析测试需求主要是确定自动化测试的范围,以便建立测试框架,继续进行测试任务;设计测试用例需要为编写测试脚本整理相关数据以及索要执行的操作;编写测试脚本就是选择一种脚本语言根据设计出来的测试用例中的数据准换成相应的测试脚本;进行测试就是运行测试脚本,并在测试脚本运行期间执行一些必要的操作;分析测试结果就是对自动化测试的结果进行分析并发现缺陷,并做好相关记录,继续追踪这个缺陷,直至缺陷呗解决为止;维护测试脚本这个是非常重要的一个步骤,一个软件不可能只做一次测试,因此对测试脚本的修改就显得尤为重要,可能会增添新的测试脚本或者直接对现有的脚本内进行修改都是有可能的,对脚本的维护以适应软件新的测试需求。
三.selenium的特点与局限性
selenium的特点:
多语言支持---Java、Python、PHP、ruby
多平台支持---Linux 、windows、Mac
多浏览器支持---Java、Python、ruby、PHP、C#、JavaScript
selenium对web页面有良好的支持,直接运行在浏览器中,模拟用户的操作
简单(API简单)
灵活(用开发语言驱动)
支持分布式测试用例执行
selenium的局限性:
1、Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以selenium在运行的时候不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是关键。
2、selenium在运行时首先要找到元素的位置才能进行下一步的操作,要提高点击的成功率,必须保证找到元素的定位方式准确。但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的。需要开发人员规范开发习惯,如给页面元素加上唯一的name,id等,这就给开发带了许多别的麻烦。
四.selenium的改进建议
1. 有时在使用Selenium查找页面中的元素时,发现总是定位不到自己想要的元素,此时有如下解决办法:
(1) 检查所使用的定位方法是否有误
(2) 有些页面中的元素定位与浏览器大小有关,此时默认将浏览器窗口设置为最大化即可解决,在python中的主要代码为: driver.maximize_window()
(3) 有时由于网速和电脑配置等原因,页面尚未完全渲染完成就开始查找元素,这时自然定位不到,解决办法为延时1~3秒后重新查找,重复延时查找过程直到找到目标元素。或者刷新页面后重新查找。
2. 有时打开一个链接后浏览器会打开一个新的窗口,但此时Selenium的默认窗口还是原来的窗口,如果想要在新的窗口中定位元素,就总是会定位不到,此时应将Selenium的默认窗口切换到新的窗口,在python中,主要代码如下:
def switchToNewWindow(self):
handles = self.driver.window_handles
for handle in handles: # 切换窗口
if handle != self.driver.current_window_handle:
# print('switch to second window', handle)
self.driver.close() # 关闭第一个窗口
self.driver.switch_to.window(handle) # 切换到第二个窗口
time.sleep(1)
切换到新的窗口后再定位即可。
3. 由于Selenium是一款“拟人化”操作软件,建议在每执行一步单击操作后都进行一下延时,以尽可能保证页面渲染完全。
4. 当一套测试流程代码已经完善无误后,可将可视化浏览器如Chrome, FireFox等替换为无界面的浏览器PlantomJS等以提高工作效率。
成员贡献:
肖进:简介 张聘:流程 程开达:特点 张壮壮:局限性 潘杰:改进建议 鄢然:博客汇总与管理