自动化脚本不稳定,原来是软件弹窗惹的祸,2个方法解决!

很多同学在学习 App 自动化或者在项目中落地实践 App 自动化时,会发现编写的自动化脚本无缘无故的执行失败、不稳定。

而导致其问题很大原因是因为应用的各种弹窗(升级弹窗、使用过程提示弹窗、评价弹窗等等),比如这样的:

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click如果不对这些弹窗进行处理,将会中断自动化脚本的运行,从而导致脚本执行不稳定。

弹窗处理思路

因为弹窗有时候是随机出现的,并不是按照固定的路径复现,所以不能按照常规元素定位给点掉。

我们可以利用 try...catch...异常处理机制:当正常元素定位不到时捕获异常,进入到异常处理场景,再然后定位弹窗元素,存在则点掉。

这里以 bilibili 的首页弹窗为例:

对应思路代码实现:

try {
    driver.findElement(By.id("tv.danmaku.bili:id/drawer_handler")).click();
}catch (Exception e){
    //找不到对应的元素就进入到弹窗的处理机制中来
    driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"我知道了\")")).click();
    //点完弹窗之后继续再来点击对应的元素
    driver.findElement(By.id("tv.danmaku.bili:id/drawer_handler")).click();
}

 优化一

上述方案代码通用性不强,代码重复量较多,所以可以考虑封装为单独的方法:

/**
 * 通用findElement方法封装,加入了异常弹窗处理
 * @param by 元素定位
 * @return 元素WebElement
 */
public WebElement myFindElement(By by){
    try {
        return driver.findElement(by);
    }catch (Exception e){
        //找不到对应的元素就进入到弹窗的处理机制中来
        //首页弹窗元素
        driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"我知道了\")")).click();
        //点完弹窗之后继续再来点击对应的元素
        return driver.findElement(by);
    }
}

优化二

对弹窗异常处理做了一定封装,但是还存在一个问题:如果应用有多个地方需要对不同的弹窗进行处理,那么此方法明显不满足。

我们可以考虑增加黑名单机制:将需要处理的弹窗加入到黑名单中,再循环遍历,同时由于有多个弹窗元素需要遍历定位导致速度很慢,我们可以通过解析 dom 结构(getPageSource)拿到页面 dom 信息,再进行判断:

/**
 * 通用findElement方法封装,加入了异常弹窗处理
 * @param by 元素定位
 * @return 元素WebElement
 */
public WebElement myFindElement(By by){
    try {
        return driver.findElement(by);
    }catch (Exception e){
        //找不到对应的元素就进入到弹窗的处理机制中来
        //弹窗黑名单列表(Map结构保存弹窗信息,其中key为元素在dom中关键信息字符串,value为元素定位表达式)
        HashMap<String,By> alertMap = new HashMap<>();
        alertMap.put("text=\"我知道了\"",MobileBy.AndroidUIAutomator("new UiSelector().text(\"我知道了\")"));
        alertMap.put("xxx",MobileBy.id("xxx"));
        alertMap.put("xxx",MobileBy.xpath("xxx"));
        Set<String> allKeys = alertMap.keySet();
        //拿到页面的dom结构信息
        String pageSource = driver.getPageSource();
        for (String key:allKeys){
            if(pageSource.contains(key)){
                //点击对应的弹窗元素
                driver.findElement(alertMap.get(key)).click();
            }
        }
        //点完弹窗之后继续再来点击对应的元素
        return driver.findElement(by);
    }
}

最后的效果:

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/176560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sizeof和strlen的区别

目录 一、 sizeof 二、 strlen 三、 sizeof 和 strlen的对比 一、 sizeof 在学习操作符的时候&#xff0c;我们学习了 sizeof &#xff0c; sizeof 计算变量所占内存内存空间大小的&#xff0c;单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是使⽤类型创…

No such module ‘FacebookCore‘

在下面的地方添加这个库

算法——滑动窗口(Sliding Window)

一、背景知识 滑动窗口算法&#xff08;Sliding Window&#xff09;&#xff1a; 在给定数组 / 字符串上维护一个固定长度或不定长度的窗口。可以对窗口进行滑动操作、缩放操作&#xff0c;以及维护最优解操作。题型一&#xff1a;固定长度题型二&#xff1a;不固定长度 二、例…

【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式

智慧工地系统围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 一、行业现状 1、施工现场管理难&#xff1a;安全事故频发&#xff0c;人工巡检难度大&#xff0c;质量进度协同难等…

一文让你上手Linux常用命令(考前十分钟快速突击+零基础阅读)

文章目录 前言Linux 常用命令1. 基本操作lscdpwd 2. 对文件的操作touchcatechovim 3. 对目录的操作mkdirrm 4. 移动文件 / 目录的操作cpmv 5. 总结基本操作6. 必不可少的实用操作mangreppsnetstat 总结 前言 本文内容为 Linux 的一些超常用命令, 内容不多且十分实用, 这些命令…

前端开发学习 (二) 事件修饰符、系统命令

其实&#xff0c;我们上一章的时候就已经说过了一些系统指令&#xff0c;这里详细介绍一下 一、v-on的事件修饰符 事件作用click点击时触发submit表单被提交时触发input输入框发生改变时触发keyup按键松开时触发keydown按键按下时触发mouseover鼠标悬停触发mouseout当鼠标移开…

Python基础教程: sorted 函数

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 sorted 可以对所有可迭代的对象进行排序操作&#xff0c; sorted 方法返回的是一个新的 list&#xff0c;而不是在原来的基础上进行的操作。 从新排序列表。 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程…

数字IC基础:有符号数和无符号数加、减法的Verilog设计

相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 本文是对数字IC基础&#xff1a;有符号数和无符号数的加减运算一文中的谈到的有符号数加减法的算法进行Verilog实现&#xff0c;有关算法细节请阅读原文&#xff0…

一个月B站涨粉200万,品牌号不可错过的吸粉秘籍

越来越多品牌为了持续在B站营销而创建品牌官方账号&#xff0c;发布原创作品融入B站UP主中&#xff0c;吸引B站用户塑造品牌形象&#xff0c;提高品牌传播度、品牌声量。 据飞瓜数据&#xff08;B站版&#xff09;统计&#xff0c;B站有着超过2万个品牌号&#xff0c;本篇文章…

Linux系统管理与服务器安全:构建稳健云数据中心

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今数字化时代&#xff0c;云数据中心已经成…

【23真题】劝退211!今年突变3门课!

今天分享的是23年云南大学847&#xff08;原827&#xff09;的考研试题及解析。同时考SSDSP的院校做一个少一个&#xff0c;珍惜&#xff01;同时考三门课的院校&#xff0c;复习压力极大&#xff0c;但是也会帮大家劝退很多人&#xff0c;有利有弊&#xff0c;请自行分析~ 本…

【人工智能】知识表示与知识图谱

目录 前言 一、知识与知识表示的概念 二、知识图谱 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如…

AIGC创作系统ChatGPT网站系统源码,支持最新GPT-4-Turbo模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

WPF实战项目十五(客户端):RestSharp的使用

1、在WPF项目中添加Nuget包&#xff0c;搜索RestSharp安装 2、新建Service文件夹&#xff0c;新建基础通用请求类BaseRequest.cs public class BaseRequest{public Method Method { get; set; }public string Route { get; set; }public string ContenType { get; set; } &quo…

bclinux aarch64 openeuler 20.03 LTS SP1 部署 fastCFS

基于已配置好的4个节点部署ceph-0 ceph-1 ceph-2 ceph-3&#xff08;早期ceph测试环境&#xff0c;名称就不修改了&#xff09; 获取fcfs.sh mkdir /etc/fcfs cd /etc/fcfs wget http://fastcfs.net/fastcfs/ops/fcfs.sh 配置/etc/fcfs/fcfs.settings # 要安装的集群版本号…

深度神经网络下的风格迁移模型

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 斯坦福大学李飞飞团队的风格迁移模型是一种基于深度学习的图像处理技术&#xff0c;可以将一张图像的风格转移到另一张图像上。该模型…

现在的投资环境有利黄金代理商吗?

和其他比较传统的黄金投资工具相比&#xff0c;现货黄金的优势在于它50倍的杠杆、T0的双向交易机制&#xff0c;以及全天接近24小时的交易时间。近年来全球地缘政治冲突频发&#xff0c;未来美国经济可能陷入衰退&#xff0c;这些都是利好黄金市场因素&#xff0c;不难预计人们…

创业新选择:社区牛奶直供站的成本低、灵活性高

创业新选择&#xff1a;社区牛奶直供站的成本低、灵活性高 相较于传统的实体店铺而言&#xff0c;选择社区牛奶直供站作为创业方式具有明显的优势。首先&#xff0c;社区牛奶直供站的创业成本大大降低。相较于租赁店面和支付昂贵的装修费用&#xff0c;创业者可以将更多的资金用…

VR全景航拍要注意什么,航拍图片如何处理

引言: VR全景航拍技术是当前摄影和航拍领域的新潮流。它采用虚拟现实技术&#xff0c;通过360度全景镜头捕捉画面&#xff0c;可以为观众提供身临其境的视觉体验。在宣传展示中&#xff0c;利用VR全景航拍技术可以为品牌宣传带来更加生动、震撼的视觉效果。 一、航拍注意事项 …

2023感恩节大促:跨境卖家如何借助海外网红营销赢得市场关注

随着全球贸易的日益发展&#xff0c;跨境电商行业变得愈发竞争激烈&#xff0c;各家卖家纷纷寻找新的营销策略以在大促期间脱颖而出。在2023年感恩节即将来临之际&#xff0c;海外网红营销成为许多卖家关注的热点。本文Nox聚星将和大家探讨跨境卖家如何充分利用海外网红营销&am…