Selenium执行测试脚本稳定性的一些经验分享交流
Selenium执行测试脚本稳定性的一些经验分享交流
公司的自动化WEB测试框架IATA已上线运行了一段时间,期间发现一些脚本稳定性的问题,与大家分享一下。
CASE执行游览器:ie firefox chrome
稳定性问题
一、在持续执行WEB自动化的过程中,如需持续执行脚本,比如持续跑脚本24小时,48小时,甚至一周时间。测试CASE会间歇性发生持续加载页面无响 应的情况。此现象发生后,测试CASE就会因为持续加载页面这个动作而无响应。后续CASE也不会执行直到当前人为手工解决当前的测试进程。
现象:页面持续加载 无反应,测试CASE 中断无法继续执行。
解决方案:

1)如上图
建议使用线程的方式来监控测试进程的WEB加载执行状态。若超时后则从线程中FAIL当前CASE,使脚本可以持续运行。
方法
在页面会发生跳转的时候 启一个 Thread来监控进程的状况,在Thread的run方法定义一个 计时器,如果计时器超时,则可以刷新页面,计时器清零,若此时刷新页面后,计时器再次超时,则线程会关闭当前进程的游览器,FAIL掉当前的 CASE,TestNG会自动启动下一个测试CASE。并且在全部测试CASE执行完毕后,TestNG会记载执行失败的CASE,然后从新执行 CASE。
部分Thread 代码
Refresh code:

干掉线程的 code

这里是关掉chrome的进程 来达到关闭游览器的目的。
通过上述步骤则可以控制游览器加载的过程从而解决CASE中加载页面无响应导致的CASE暂停问题。
我们发现使用WebDriver的过程中,TESTCASE在执行时,并非只有GET(Url)的时候会发生测试CASE卡主的问题,以下是对会发生此情况的函数的补充
driver.findelement(String locator) //查找页面元素
driver.refush(); //刷新页面
driver.getpagesource(); //获取页面html文本输出
element.click();//点击页面元素
见过检查发现上述函数在加载页面或查找页面元素的时候,若发生由于网络原因或者页面模块加载出现问题时,页面都会在这个过程中卡住,直接的后果就是这个CASE持续执行几小时没结果。在 稳定性1文中我们已经介绍过处理的方法,在这里只针对某一个函数去放出部分代码,
具体思路为
以driver.refush();为例
线程实现的代码

核心调用的刷新页面的函数

refreshThread();实现

调用流程
主CASE执行刷新函数?刷新函数调用子线程?子线程执行刷新?执行完毕告诉主线程OK。
若主线程判断子线程超时既页面卡主的情况,则主线程会关闭子线程执行相应的FAIL操作。
Selenium执行测试脚本稳定性的一些经验分享交流的更多相关文章
- seleniumGrid分布式远程执行测试脚本
执行UI自动化测试脚本时,不仅可以在本地执行,也可以远程指定某计算机执行测试脚本,seleniumGrid为我们提供了这类服务,但还需要自己搭建环境. 一.本地计算机需要准备java环境和seleni ...
- Selenium执行JavaScript脚本
JavaScript是运行在客户端(浏览器)和服务器端的脚本语言,允许将静态网页转换为交互式网页.可以通过 Python Selenium WebDriver 执行 JavaScript 语句,在We ...
- unittest 执行测试脚本输出测试报告
import unittestimport HTMLTestRunnertest as HTMLTestRunner#获取路径path = './'#创建测试套件,读取测试脚本suite = unit ...
- Selenium执行js脚本
如何使用Selenium来执行Javascript脚本呢 Selenium中提供了一个方法:execute_script 来执行js脚本 return 可以返回js的返回结果 execute_scri ...
- mmdetection 批量执行测试脚本
在终端执行该脚本,传入所有的测试路径,每一个model的结果文件夹里面有一个best文件夹存放着其训练时最高mAP对应的权重,名字为best.pth dir=$(ls -l $1 |awk '/^d/ ...
- selenium grid解决多台电脑进行并发执行测试脚本
1 两台计算机,一台计算机既做HUB,又做Node 机器A设置HUB的步骤: 1 运行---输入cmd 2 输入: cd c:/ 3 输入: java -jar selenium-server-st ...
- RobotFramework+Selenium如何提高脚本稳定性
通过RF来跑selenium的脚本,正常运行一遍都没有问题,但如果要多次运行,提高脚本的稳定性,那么应该如何做呢? 当然有时候最简单最简单的方法就是直接通过sleep来等待,虽然简单粗暴,但会带来 ...
- Appium环境的安装与配置,Python测试脚本测试
Appium自动化测试系列1 - Appium环境的安装与配置 发表于4个月前(2015-01-27 14:34) 阅读(803) | 评论(0) 0人收藏此文章, 我要收藏 赞0 寻找 会’偷懒 ...
- ltp 测试流程及测试脚本分析
LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...
随机推荐
- extjs_04_grid(弹出窗口&行编辑器 CRUD数据)
1.弹出窗口(添加.删除) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWRhbV93enM=/font/5a6L5L2T/fontsize/400/f ...
- 在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类
在Python使用正则表达式需要使用re(regular exprssion)模块,使用正则表达式的难点就在于如何写好p=re.compile(r' 正则表达式')的内容. 下面是在Python中使用 ...
- css盒模型和块级、行内元素深入理解
盒模型是CSS的核心知识点之一,它指定元素如何显示以及如何相互交互.页面上的每个元素都被看成一个矩形框,这个框由元素的内容.内边距.边框和外边距组成,需要了解的朋友可以深入参考下 一.CSS盒模型 盒 ...
- DM6446开发攻略——u-boot-1.3.4移植(1)
http://zjbintsystem.blog.51cto.com/964211/282387转载 UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2 ...
- FZOJ2111:Min Number
Problem Description Now you are given one non-negative integer n in 10-base notation, it will only c ...
- Kendo UI开发教程(24): 单页面应用(二) Router 类
Route类负责跟踪应用的当前状态和支持在应用的不同状态之间切换.Route通过Url的片段功能(#url)和流量器的浏览历史功能融合在一起.从而可以支持把应用的某个状态作为书签添加到浏览器中.Rou ...
- java.io.EOFException解决
主要错误提演示样例如以下: 严重: IOException while loading persisted sessions: java.io.EOFException 严重: Exception l ...
- Effective C++_笔记_条款03_尽可能使用const
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 关键字const多才多艺,语法变化多端.关于const的基本用法 ...
- ABAP文件上传下载 用SMW0
以excel举例 smw0事物代码进入传输模板到服务器上: 下载模板的用到的from代码如下: FORM sub_chek_directory . DATA: l_formkey1 LIKE wwwd ...
- BSGS_Baby steps giant steps算法
BSGS这个主要是用来解决这个题: A^x=B(mod C)(C是质数),都是整数,已知A.B.C求x. 在具体的题目中,C一般是所有可能事件的总数. 解: 设m = ceil(sqrt(C))(ce ...