RobotFramework+Selenium如何提高脚本稳定性

摘要:
通过RF来跑selenium的脚本,正常运行一遍都没有问题,但如果要多次运行,提高脚本的稳定性,那么应该如何做呢?
通过RF来跑selenium的脚本,正常运行一遍都没有问题,但如果要多次运行,提高脚本的稳定性,那么应该如何做呢?
当然有时候最简单最简单的方法就是直接通过sleep来等待,虽然简单粗暴,但会带来效率的下降
这一阶段一直在搞几个场景的脚本,记录下当中可能遇到的问题
1 绝对不能每一步都去判断等待,重试
虽然通过方法,我们可以让页面等待元素出现,可以直接去判断每一步是否执行成功,然后通过每一步是否执行成功来判断是否需要重试
但没有效率,而且也没有必要
实际感觉即使不加判断等待,可能八成的脚本都是可以正常执行通过的
如一般简单的文本框中输入文字,这些不需要太关注
在RF中,可以通过统一添加
   wait until keyword succeeds
   就是如果执行不成功,则多次尝试点击,但这个如果失败,就直接执行失败了
2 一些场景尤其需要注意判断,像查询
   如查询,因为查询之后一定会需要一段时间去加载等待,而且这个等待时间可能是不固定的,如果你不是采用固定等待的方法,那么就需要去考虑我如何判断查询已经成功返回
   如果查询返回的是一个table,,那么可以通过判断table的行数的变化,或者table中一些属性的变化
   尽量去比较下,当查询前,和查询后到底有什么区别,如果找到区别,就可以通过wait语句去等待这个变化的出现
   在RF中,可以用比较粗暴的方法,用一段FOR结构,循环判断,如果出现了退出的条件,则退出循环,然后固定等待sleep 1
   这样的结构,最多可能就等待5s,10s,而且可控,又不是把等待完全交给语句
   FOR   ${i}     IN  RANGE   1    10
         判断是否成功的元素,如等待或者获取
         exit for loop   退出的条件
         sleep 1 
3  最稳妥的判断
   如果点击出现一个对话框,但执行的时候,可能不出现,可能出现
   如果不应该出现的时候出现了,可能就会导致脚本直接失败
   如果要最稳妥的处理,那么可以通过  Run Keyword And Ignore Error
  来判断,这个语句可以返回执行的结果是PASS还是FAIL
  那么可以先   ${result}     Run Keyword And Ignore Error   等待控件   如等待对话框出现 
 后面就根据这个result,如果出现,那么点击,如果不出现不点击
 Run Keyword And Ignore Error 不影响脚本的执行结果,不会把结果变成失败
4  RF中的IF
  RF中的IF结构非常不好写,随意尽量不要添加复杂的判断
  官网的例子
RobotFramework+Selenium如何提高脚本稳定性第1张
如果遇到字符串判断,可以给变量添加“”
如 ”${status}“ == “PASS”
5 数据异常
  其实出现异常,还有一种可能是数据
  如原来已有数据了,可能你添加就会报重复,可能有的提示就不会出现
   这时候要注意数据,当然最好是通过数据库直接来复制或者检查,在执行前进行数据整理,在执行后数据清理
   有一些数据可能从UI中是无法删除,那么可能就需要直接从库中删除
   但所有处理都会花费太多的时间和成本
   如果比较简单,可能就执行前人工看下
6  无法避免的异常
    实际执行中即使你加了再多的判断,还是可能会出现一些无法想到的意外
    如遇到过,执行的时候,直接返回接口异常
    所以自动化的前提,还是系统本身是稳定的,如果本身系统就不够强壮,你可能遇到的异常就越多
7  每次执行,遇到异常都要分析
    可能刚调试好的脚本,你执行一次没有问题,那多执行几次,如果出现了异常,就要去分析异常出现的可能
    只要出现过一次异常,那么下一次就有可能会再次出现
    实际总,运行,判断查询,虽然已经加了判断,但有一次出现了不正常
    后来修改了判断,加强了判断,也许下次就不会再出现
   所以所谓的稳定就是在一次次的运行中,分析,修改,加强
8  判断脚本的稳定
     最简单的方法,就是不断重复运行
     如果保证网络正常,浏览器正常
    可以制定一个指标,如跑10,或者20,都没有异常,则认为脚本是可以的
    毕竟没有可视化的所谓稳定,还是需要通过直观的数据去判断
=========================================================
 这只是在用RF+Selenium做几个脚本时的思考
 毕竟有时候,我们看一些课程都是百度查询,那个都太简单了,基本不会遇到什么异常
 但实际中会遇到各种可能性

免责声明:文章转载自《RobotFramework+Selenium如何提高脚本稳定性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇批处理命令大全drupal重置管理员密码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

使用jsPlumb插件实现动态连线功能

jsPlumb是一个强大的JavaScript连线库,它可以将html中的元素用箭头、曲线、直线等连接起来,适用于开发Web上的图表、建模工具等,其实jsPlumb可能主要是用来做流程图的,它在实现这方面的功能上非常强大,我在项目中只使用了它少部分功能,来实现项目中连线的效果。...

Java switch 枚举

Switch可以使用int.short、char、Enum和String其中,Enum是1.5之后的新特性,String是java8的新特性。所以正确的写作应该如下。...

js 预览 excel,js-xlsx的使用

js-xlsx简介SheetJS生成的js-xls x是一个非常方便的工具库,只能使用纯js读取和导出excel。它功能强大,支持多种格式,支持xls、xlsx和ods等十几种格式。本文以xlsx格式为例。官方github:https://github.com/SheetJS/js-xlsx支持演示在线演示地址:http://demo.haoji.me/20...

Java成长之路

如何学习如何从初级Java程序员成长为合格的架构师,或者一个合格的架构师应该拥有什么样的技术知识体系,这不仅是一个刚进入职场的初级程序员,也是一个工作了三年或五年后感到困惑的老程序员面临的问题。首先必须明确Java的突出之处和不同之处。...

Elasticsearch之插件介绍及安装

3.KopfPlugin(主要)Kopf是ElasticSearch的管理工具。它还为ES集群操作提供了API。4.级别插件级别工具可以帮助用户监控ElasticSearch的运行状态。但是,此插件需要许可证。安装许可证后,您可以安装marvel的代理。代理将收集弹性搜索的运行状态。ES插件HeadPlugin的在线安装需要转到https://github....

Latex添加参考文献

如何用.bib文件自动生成论文Reference一般期刊或会议给的Latex模板会自带参考文献样式,因此,可以利用.bib文件来自动生成该模板下的参考文献样式。下面以引用以下三篇论文为例,来说明如何生成.bib文件,然后利用.bib文件自动生成Reference。引用论文:1.生成.bib文件(1)新建一个.txt文件;(2)打开Google学术,搜索你想要...