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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    你可能感兴趣的文章
    parallels desktop for mac安装虚拟机 之parallelsdesktop密钥 以及 parallels desktop安装win10的办公推荐可以提高办公效率...
    查看>>
    parallelStream导致LinkedList遍历时空指针的问题
    查看>>
    Parameter ‘password‘ not found. Available parameters are [md5String, param1, username, param2]
    查看>>
    ParameterizedThreadStart task
    查看>>
    Paramiko exec_命令的实时输出
    查看>>
    Spring security之管理session
    查看>>
    paramiko模块
    查看>>
    param[:]=param-lr*param.grad/batch_size的理解
    查看>>
    spring mvc excludePathPatterns失效 如何解决spring拦截器失效 excludePathPatterns忽略失效 拦截器失效 spring免验证拦截器不起作用
    查看>>
    Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
    查看>>
    Parrot OS 6.2 重磅发布!推出全新 Docker 容器启动器
    查看>>
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Passport 密码模式
    查看>>
    Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
    查看>>
    passwd命令限制用户密码到期时间
    查看>>