最新消息:20210917 已从crifan.com换到crifan.org

【已解决】用uiautomator2查找不到元素如何等待app启动完毕

元素 crifan 665浏览 0评论
折腾:
【未解决】用uiautomator2操作安卓浏览器打开百度首页
期间,直接调试代码:
inputElem = d(resourceId="com.android.browser:id/b4h")
# print("inputElem=%s" % inputElem)
# inputElem=<uiautomator2.session.UiObject object at 0x1097abbe0>
if inputElem.exists:
    print("Found input box %s" % inputElem)
else:
    raise Exception("Can not found input box")
是可以找到元素的。
但是直接运行,无调试断点,则找不到:
需要搞清楚:
如何才能实现此处:
等待安卓内置浏览器启动结束
确保安卓当前页面出现对应元素
便于后续能检测到该元素

openatx/uiautomator2: Android Uiautomator2 Python Wrapper (github.com)
找找解决办法
好像是可以
while循环检测元素?
不至于
看到有个wait的逻辑
# advanced usage
d(text="Settings").exists(timeout=3) # wait Settings appear in 3s, same as .wait(3)

# wait until the ui object appears
d(text="Settings").wait(timeout=3.0) # return bool
# wait until the ui object gone
d(text="Settings").wait_gone(timeout=1.0)
那就去试试
Prop    Value
activity    .BrowserActivity
package    com.android.browser
className    android.widget.TextView
description    
text    主页
resourceId    
clickable    false
label    
x, y    82, 2220
width    52
height    36
enabled    true
visible    
XPath    //*[@text="主页"]
position     (0.092, 0.927) 点击
代码 d(text="主页")
然后去写代码:
实现:
检测 包名是com.android.browser 表示是 小米内置浏览器
且  text=”主页” 表示是第一个tab页:主页
依次确认 浏览器启动完毕了
用代码:
# wait util browser launch complete -> appear 主页 tab
d(text="主页").exists(timeout=10)
即可。
【总结】
此处用:
Browser_XiaomiBuiltin = "com.android.browser"
browserPackage = Browser_XiaomiBuiltin
# wait util browser launch complete -> appear 主页 tab
d(text="主页", packageName=browserPackage).exists(timeout=10)
可以实现
等待足够长时间(最长10秒),直到出现 
  • package是”com.android.browser”
  • text是”主页”
表示浏览器的左下角第一个tab
以此表示 浏览器启动完毕了
从而实现了,等待(浏览器启动和加载)完毕(直到出现某个页面上的元素)的效果
【后记 20210409】
后来发现,左下角第一个tab,有时候会变,比如变成了:资讯
所以去用最后下角的 我的 tab,这个不会变
代码改为:
# wait util browser launch complete -> appear 我的 tab
# MustShowTabName = "主页"
MustShowTabName = "我的"
# d(text=MustShowTabName).exists(timeout=10)
d(text=MustShowTabName, packageName=browserPackage).exists(timeout=10)
即可。

转载请注明:在路上 » 【已解决】用uiautomator2查找不到元素如何等待app启动完毕

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.185 seconds, using 23.36MB memory