博客
关于我
uiautomator点击不同对话框按钮--正则表达式
阅读量:632 次
发布时间:2019-03-13

本文共 1204 字,大约阅读时间需要 4 分钟。

如何防止弹出框中断脚本操作并优化代码流程

在编写自动化脚本时,弹出框的存在往往会成为无形的掣肘。特别是在手机端应用中,更频繁会遇到各种类型的弹出提示框。

一般来说,这类对话框都会有不同的提示内容,按钮名称也不尽相同。在传统编程方法下,为了应对不同的提示框,我们需要逐个去寻找指定的控件并进行点击操作。这种方法极其繁琐,尤其在面对大量的弹出提示框时会成为 Stamina 的大敌。

确实,这样的操作方式会引发一系列问题:正常工作流程中出现不确定性提示框,脚本自动化操作会因为中断而无法继续进行;同时,每次弹出提示框都需要手动获取控件属性并进行点击,极大增加了脚本的运行复杂度。

针对这一痛点,许多开发人员选择写定位方式,从资源属性层面预估点击目标是否为确定按钮。这种方法虽然可行,但存在一个潜在问题:如果对话框的资源描述或文本内容发生变化,该方法会失败。

因此,更灵活的方案应考虑使用正则表达式来动态匹配弹出框中的确定按钮。这种方法可以自动适应不同的对话框布局和描述,减少因界面变更引起的维护工作。

针对常见的以文字描述的确定按钮,我们可以将它们归纳为几个模式类别:

  • 确认操作类按钮(如"是"、"确认"、"确定"、"是"、"好的"等)
  • 提示性强调类按钮(如"OK"、"确认"、"完成"等)
  • 语境化短语类按钮(如"通过"、"继续"、"是"、"完成"等)
  • 数字或符号表示类按钮(如"1"、"•"、"."等)
  • 基于这些常见模式,正则表达式可以编写为通用匹配模式,例如:

    ([\s\S]{0,10})(匹配0到10个字符的文本)

    但为了更有效地对话框处理,我们可以采用更精准的规则,例如:

    \) 确定按钮的文字内容:\b后面跟着具体的中文词组或数字符号)\b. 通常可以简化为:

    (\d+)|确定|确认|是|好的|继续|完成|通过|操作成功|执行

    这种方法能有效覆盖大部分常见的确定按钮文字描述。

    在实际应用中,选择适当的确定按钮匹配方式至关重要。对于不确定性提示框,我们可以采用较为宽松的模式匹配,以容忍一定程度的文本偏差。

    此外,还需要注意对话框类型差异可能带来的额外问题。例如,资源管理类对话框通常会采用较简洁的提示语和统一的确定按钮形式,相比之下,操作确认对话框可能使用确认信息更为丰富。在编写正则表达式时,针对不同场景的对话框类型,适当调整匹配程度。

    具体的实现方式还有待于具体的应用场景来决定,但已有的经验表明,基于正则表达式的动态匹配能够显著提升弹出框对抗的效率,减少因为提示框出现而干扰脚本正常运行的可能性。

    总体而言,选择问题适应型的手动处理方案比硬编码更具适应性和灵活性。这种灵活性可以避免因界面变化导致的 maintain 工作量增加,让脚本更加稳定可靠地运行。

    在实际开发过程中,可以对发现的提示框进行反馈,收集更多实际使用中的模式,从而进一步完善正则表达式规则,使其在更广泛的场景下有效运行。

    转载地址:http://uhyoz.baihongyu.com/

    你可能感兴趣的文章
    mariadb multi-source replication(mariadb多主复制)
    查看>>
    MariaDB的简单使用
    查看>>
    MaterialForm对tab页进行隐藏
    查看>>
    Member var and Static var.
    查看>>
    memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
    查看>>
    memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
    查看>>
    Memcached:Node.js 高性能缓存解决方案
    查看>>
    memcache、redis原理对比
    查看>>
    memset初始化高维数组为-1/0
    查看>>
    Metasploit CGI网关接口渗透测试实战
    查看>>
    Metasploit Web服务器渗透测试实战
    查看>>
    MFC模态对话框和非模态对话框
    查看>>
    Moment.js常见用法总结
    查看>>
    MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
    查看>>
    mxGraph改变图形大小重置overlay位置
    查看>>
    MongoDB可视化客户端管理工具之NoSQLbooster4mongo
    查看>>
    Mongodb学习总结(1)——常用NoSql数据库比较
    查看>>
    MongoDB学习笔记(8)--索引及优化索引
    查看>>
    mongodb定时备份数据库
    查看>>
    mppt算法详解-ChatGPT4o作答
    查看>>