请教下各位大佬,用 appium 测试 app 的时候,为什么同样的代码,加两个打印,就可以找到点击那个元素,少两个打印就会报错找不到那个元素,反复试了无数次都是这样
感谢大家的回复,最后的解决方法是:加了个显式等待就好了。 但还是不明白为什么在不加显式等待的情况下,加 print(session.page_source) 也可以成功
稳定性问题?推荐 uiautomator2
啊?现在 appium 底层调用的不就是 uiautomator2 么
我看你截图,两个截图里展示的内容都不大一样,第二个多了个弹窗。
从我历史经验,有 2 种可能: 1、sleep 时间不够长。session.page_source 语句的执行是比较耗时的(一般几秒左右,复杂页面时间更长),相当于再 sleep 了几秒。你看下加长 sleep,去掉 print,是否可以解决? 2、webview 内部元素要通过调用 page_source 强制遍历一遍,才会出现在控件树中(猜测)。可以试试不加 page_source 和加 page_source ,看加的话是不是稳定成功,不加的话是不是稳定失败。
你直接加个隐式等待多==
感觉和打印无关,可能和 session 的 2 个方法有关,那 2 个方法内部可能需要等元素加载完成,所以你调用之后就可以找到元素
一般这种问题,先加个等待试试
感谢你的回复。我这段代码就是的目的就是点击那个弹窗的关闭按钮,图 1 是因为操作成功了,所以截图上也就没有那个弹窗了。我试了只要有 print(session.page_source) 就必定会成功,没有 print(session.page_source) 就必定会失败,即使加长了 time.sleep 的等待时间,也一样会失败。
有可能是 print 起到了等待的效果
page_source 也耗时啊