关于如何更好的精确定位元素的问题(未解决)

上一篇 / 下一篇  2018-11-07 14:35:08 / 个人分类:UiAutomator

UiAutomator2想要实现如下业务:
1、打开QQ
2、进入动态-->好友动态
3、点击右上角“+”
4、点击“说说”
5、输入“flyme!”并发表说说。
6、退出空间
7、退出QQ应用

先暂时写一点点简约代码(关于健壮性,以及其他问题先不谈):
#  com.tencent.mobileqq
import uiautomator2 as u2
from time import sleep
d = u2.connect('192.168.1.129')
d.app_start("com.tencent.mobileqq")
d(text="动态").click()
sleep(4)
d(description = ("点击进入好友动态")).click()
sleep(4)
d(description=("写说说等按钮")).click()
sleep(4)
# d(className=("android.widget.LinearLayout")).click()
d.text("说说").click() # 。。。。。。。。。。。。。。。。。。。。。。。。。。无法成功执行
sleep(4)
d(text="分享新鲜事...").set_text("flyme!")
sleep(4)
d(text="发表").click()
sleep(4)
d(description = ("返回动态 按钮")).click()
sleep(4)
d.app_stop("com.tencent.mobileqq")

遇到问题:点击“说说”图标进入说说编辑界面这一处无法成功执行。
这里是通过text这个元素来进行定位的,并且通过weditor工具中的“点击”按钮确实是可以准确定位并成功跳转到编辑界面,但是实际代码执行中却无法成功定位。
那是不是可以通过他的父类android.widget.LinearLayout来定位呢,因为通过这个className也可以实现定位。
好,那就这样写:
d(className=("android.widget.LinearLayout")).click(),但这个className是在第三个,那么instance应该 = 2;
d(className=("android.widget.LinearLayout").instance(2)).click()
行,运行一下,报错!
AttributeError: 'str' object has no attribute 'instance'
然后又改成d(className=(("android.widget.LinearLayout").instance(2))).click()。。。。。



这个问题该怎么解决?

TAG: 元素定位

bling123的个人空间 引用 删除 bling123   /   2018-11-07 16:19:04
解决方式:通过坐标定位的方式
#  com.tencent.mobileqq
import uiautomator2 as u2
from time import sleep
d = u2.connect('192.168.1.129')
d.app_start("com.tencent.mobileqq")
d(text="动态").click()
sleep(4)
d(description = ("点击进入好友动态")).click()
sleep(4)
d(description=("写说说等按钮")).click()
sleep(4)
#  d(className=(("android.widget.LinearLayout").instance(2))).click()
#  d.text("说说").click()
d.click(110,265)
sleep(4)
d(text="分享新鲜事...").set_text("flyme!")
sleep(4)
d(text="发表").click()
sleep(4)
d(description = ("返回动态 按钮")).click()
sleep(4)
d.app_stop("com.tencent.mobileqq")
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar