问题描述:sonic-2.0-beta appium无法定位系统弹框上的元素, 如长按TextView弹出的弹框上的元素:复制等 Server版本:sonic-2.0-beta Agent版本与部署方式:sonic-2.0-beta 手机型号与系统版本: 截图:
相关日志:
chenyan16 试了下,用WEditor+uiautomator2是能定位到元素的
chenyan16 用release
Eason ok
Eason 试了下2.0-release版本,控件元素还是获取不到这个系统弹框的布局
chenyan16 试下xpath能不能找到吧,找不到就是appium的uia2有问题了
Eason 试了下用android的uiautomator2库也识别不到了,可能python版那个不是用的原生的uiautomator库
chenyan16 android原生的uiautomator2.2版本已解决只在当前active窗口查找元素的问题了,会遍历所有window, python版本的uiautomator2框架用新版本的查找方式了,所以可以找到元素,appium-uiautomator-server还是用的老的findobject的方式
chenyan16 提个pr给appium了可以🤔
Eason
chenyan16 😆可以可以,那你可以提给appium的apk仓库,要是合了,我下版本也能拿进来了
chenyan16 其实replace那个逻辑你也能提一下
Eason 问题解了,其实appium也支持多窗口查找, 初始化driver的时候可以设置enableMultiWindows属性,该值默认是false
Eason 你说输入那个问题吗,那个应该改不了,那个是因为输入框里面有提示文本,也被当成text逻辑处理了,正常如果空的输入框是会拼接的
chenyan16 我的意思是,replace应该是不管提示文本的,clear之后还判断是否有文本这个逻辑其实很奇怪
Eason 如果有提示文本,后面加赋值成空字符串是必要的,要不然会把提示文本拼接到前面了
chenyan16 哎?上次说不能拼接是什么原因来着
Eason 就是因为我输入框里面有提示文本,getText其实可能获取到的是提示文本,并不是输入的文本
chenyan16 这个也可以提issue的
chenyan16 哦?那我可以下版本加上
chenyan16 那你临时的话可以用groovy解决
import com.alibaba.fastjson.JSONObject; JSONObject settings = new JSONObject(); settings.put("enableMultiWindows",true) androidStepHandler.getAndroidDriver().setAppiumSettings(settings)