建议你把具体解决办法添加到主楼 方便其他有相同问题的人
我写了个 demo List 的最后一个就是最后一个红包
做肯定应该是能做的 你再研究一下吧
try {
Thread.sleep(15000);//我用来点开微信的
List<WebElement> elementList = driver.findElementsByAndroidUIAutomator("new UiSelector().resourceId(\"com.tencent.mm:id/a_a\")");
if (elementList.isEmpty()) {
return;
}
for (WebElement element : elementList) {
System.out.println("坐标为:" + element.getLocation().x + "," + element.getLocation().y);
}
} catch (NoSuchElementException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
输出
坐标为:327,1224
坐标为:327,1518
你的手机是 6.0 以下 检测不到 PopUpWIndow 的
区别:element 的 click 事件默认是去 tap 这个 view 的中间位置坐标
对于你这个情况 如果覆盖 View 位置是定死的 在你拿到 element 的时候 获取位置和坐标 判断一下就行了
对于其他不能确定的情况,还是比较复杂,目前我只是基于 Xpath 来判断,还没搞出一个又快又完善的办法来
python 我不知道
java 我亲测使用有这个 api ,并且返回的是 list
Python java 用的都是 android 的 UIautomator ,java 能支持的话 python 应该也能支持的
你试试有没有 find_elements_by_android_uiautomator
这个方法
使用find_elements_by_name
返回 name 为该值的所有 element 点最后一个
ref
这个方法传的应该不是 adb 的指令
you can't run adb commands directly using appium client. I saw a request for such functionality maybe a half year ago and the conclusion was that if there is some specific adb command user want to execute and it is not covered with appium functionality, you have to do it on your own.
issue
代码里自己调 adb 来用执行吧,说起来我还不知道 execute 这方法怎么用
这我就不知道了 通常我的 capability 比你这个多了个 udid 和 app 字段
udid 存的是 你这的 “PBV7N16C29013577” app 是 apk 路径 deviceName 都是瞎填的
你先试试换成.ui.MainAcitivity