• 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操作。

  • 相关阅读:
    linux virtualbox
    cboard安装
    test
    kafka安装
    OLAP解释
    php 连接数据库直接转成json格式
    hive学习
    mariadb修改密码
    mariadb anzhuang
    IDEA12 中写hql语句编译器莫名报错
  • 原文地址:https://www.cnblogs.com/timssd/p/5101463.html
Copyright © 2020-2023  润新知