appcrawler v2.7.0&v2.7.1运行异常

  • 问题描述:在运行v2.7.0和2.7.1版本时,testcese中有一个元素报错信息如下:导致无法正常自动登陆,此case在v2.4.0正常。有人遇到类似问题吗?有解决办法麻烦告知一下,谢谢
The element XXX does not exist in DOM anymore
  • 场景:App启动后会有一个隐私弹窗,之后是正常的登陆界面,但目前case在点击隐私弹窗过程中报错,导致无法正常自动登陆。

  • 完整日志文件
    appcrawler.log (188.9 KB)

  • 注:之前beta版本的v2.7.0也会有The element XXX does not exist in DOM anymore问题,但是现象不太一致,终端控制台会停止(卡住),App也停止遍历,这次能正常继续遍历,但是这个报错会影响testcase的执行。

  • 报错截图01:

  • 日志截图02:

  • 日志截图03:(按钮有点击)
    image

  • xml代码截图04:

  • testcase代码如下:

testcase:
  name: "TesterHome AppCrawler"
  steps:
  - xpath: "//android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button' and @text='同意' and @class='android.widget.Button']"
    action: click
    time: "1"
  - xpath: "//*[@resource-id='com.jlpay.merch:id/et_login_account']"
    action: "84944037011A00O"
    time: "1"
  - xpath: "//*[@resource-id='com.jlpay.merch:id/et_login_password']"
    action: "123456Aa"
    time: "1"
  - xpath: "//*[@resource-id='com.jlpay.merch:id/btn_login']"
    action: click
    time: "1"
  - xpath: "//*[@resource-id='com.jlpay.merch:id/btn_confirm']"
    action: click
    time: "1"

你把运行结果整个的打包上传下吧

我看了下日志,应该是同意按钮点击了,下个按钮没找到,应该是加载延迟导致的。你可以试下加个等待。或者用我新发布的一个2.7.2的预览版本试下,我加了一些隐式等待。

  • 确实是延时加载的问题,之前也有尝试过在testcase最开始的位置延时3秒,不过没解决,刚在2.7.0版本在同意按钮点击之后再加3秒延时 ,解决了这个问题 :+1:

  • 2.7.2预览版没这个问题了,不过自动登陆进入首页后会有数字转换异常的问题,关于类似传值思寒老师能否做下优化:
    (1)兼容一下:调用者传入的yml文件里面的字段统一传字符串,你那边统一转换或者取值
    (2)文档说明一下:现在每个版本变动有的时候会有影响,有些值这个版本这样传没问题,下个版本就不行了。比如time字段,有些地方是传整数,有些地方传字符串,还有值为true或者false的字段,有些地方是传字符串,有些地方是直接传,一个版本没问题的,可能下个版本就有问题了,这些地方能说明一下或者统一下会好些。
    (3)类似数字转换异常报错的时候能指向yml行数。目前这种报错没有指向具体哪里,调用的时候出错了不方便排查问题。

  • 最后,再次谢谢思寒老师的热心解答。

本来就是自动转的,这类的报错我估计是转换不成功,所以还是配置搞错了。

一般底层都会告诉配置出错在什么地方了,有具体的文件行数的。得具体问题具体分析。

咨询一下,你那边2.7.1和2.7.2版本运行的appcrawler.log日志文件 为空吗?很奇怪我这边新版本执行的日志都是0KB,不方便排查报错

是空的,2.7.0开始就是空的了,整个遍历过程是正常的,我现在是从控制台看的实时日志