被上班势力吓哭~来点提神的吧!
来源:互联网 发布:阿里云主机多少钱 编辑:程序博客网 时间:2024/05/17 18:04
1、问题描述
在我们使用Appium+RobotFramework自动化的时候,报告中经常会出现BadStatusLine问题,而且该问题会导致用例失败。
与对框架熟悉些的前辈讨论,都说其原因是连接不稳定导致http请求无返回。这种http请求、连接不稳定的问题好像很难解决。
2、分析
虽然前辈们都说是连接不稳定性导致,我们还是需要例行分析下,出现BadStatusLine相关的堆栈信息如下,其中可以看到相关调用过程,
相关代码如下所示,而且增加了日志,BadStatusLine基本上都是这一种问题,逻辑不难分析,在解析http请求的响应状态时没有数据(1行都没有)时没法继续了,就抛出BadStatusLine问题,确实看起来和前辈们所述完全一致。
问题大概原因知道了,既然是连接不稳定,解决思路是在http请求的上层捕获该异常,捕获到后就重试,最大重试3次,实在不行再抛出异常。
3、解决方案
笔者是使用selenium3.4.3版本;查看版本方法:通过查看Lib\site-packages\selenium中的__init__.py信息即可知道;如果版本相同,可直接做相关修改;如果版本不同,作相应类似修改即可。
主要修改代码Lib\site-packages\selenium\webdriver\remote中的webdriver.py如下图所示,
当然,前面也需要import一些包,如下图
我们在解决过程中也遇到了不少坑,介绍下最重要的一个坑,在关键代码中,我们看到有time.sleep(0.5),这个比较关键,如果没有这个休眠立即重试,效果不是很好,如果这个休眠时间太长,比如5s,会导致很多关键字超时(大部分关键字默认超时时间是5s,通常大家设置的是10~20s),也就失去了我们失败重试的初衷(初衷是想我们关键字执行成功)了。
4、验证分析
4.1 验证分析方法
因为BadStatusLine问题不是必现问题,所以验证起来不是很方便,大家修改完webdriver.py后(修改前记得备份哦)可以把自动化测试跑起来,然后分析自动化测试的日志看有没有出现该问题,出现该问题后有没有重试,重试后有没有效果。
这里简单介绍windows中的分析方法,这时候我们可以通过命令来匹配具体出该问题的时间,再来分析html中的报告来观察,命令:findstr /s /C:"BadStatusLine" ${path}\*.xml ,${path}代表报告路径。
4.2 分析结果
经过验证,这种方案已经解决大部分(80%以上)的BadStatusLine问题,这里提供常见几种关键字出现BadStatusLine问题的分析
Tap关键字,retry后成功了
Capture Page Screenshot关键字,retry后能够看到截图
Close All Applications关键字,retry后没有看到问题
Log Source关键字遇到BadStatusLine再也没出现None了,也不会失败了
- 被上班势力吓哭~来点提神的吧!
- 上班一族解乏提神的七秘方
- 上班一族解乏提神的七秘方
- 笑话来提神
- 上班半年来的心得
- 提神的七种食物
- 谁让员工周日来上班的?
- 来公司上班的第一天
- 今天骑车上班来的路线
- 上班前的那点事,
- 初七上班,软件测试的注意点
- 上班族解乏提神的七大窍门
- 又来上班了
- 今天上班来了
- 上班那点事
- 来点阳光点的
- 给准备上班的毕业生几点建议
- 《Java程序员,上班那点事儿》书名的由来
- rpc 简单模型
- memcached真实项目中的应用
- mysql 中常用的语句
- 内存加载图片压缩 BitmapFactory.Options
- 【特征检测】BRIEF特征点描述算法
- 被上班势力吓哭~来点提神的吧!
- R使用小技巧
- oracle dbf文件更换目录
- Leetcode Num.169 -- Majority Element
- TensorFolw学习笔记-TFRecord
- Leetcode个人题解712
- 数据可视化的未来趋势分析
- ArcGIS的swm二进制文件处理成为矩阵形式的文本文件
- MySQL 悲观锁和乐观锁和共享锁