anybody help me!
你可以反过来点击试一下,在 xml 节点上点击,看能不能点到对应的 UI,或者元素是 webview 的,使用 webview 的方式定位。
有的元素可能会有点这种问题,自己在 xml 代码里面找一找。或者用 macaca 的app-inspector
试试,这个定位可能好一点。npm install -g app-inspector
,然后app-inspector -u uuid
inspector 工具获取到页面的层次结构,截个图看看
最起码 appium 的关键 log 和被测工具的信息或者截图还是要有的吧。
正常能识别的话点击节点,左边会高亮,例如现在的顶层节点可以高亮,而顶层之后的节点全部不能高亮
而且对应节点的 tap 时,报错
对应点击日志
顶层以下的所有节点 visible 属性为 false
这种的话那就是这个元素确实在左边没显示,可以找下开发改改。。
我开始就说了,不是个别部分元素这样,是所有元素都这样,除了顶层页面节点可以高亮识别,其他元素都不行。开发也看了,也不清楚怎么回事~~~~ 有没有懂 ios 前端开发的朋友看看。
不妨试试更新 Appium-desktop 为最新的版本
目前你的自动化环境配置 Xcode: 9.4、iOS:11.4 都属于边界的环境,需要一步一步排查,(1).先看手里除了 iOS 11.4 系统还有其他系统的手机吗?换个手机试试,有可能 iOS11.4 系统的手机 Appium 未兼容 (2).如果非 iOS 11.4 系统还是有问题,下载一个 Xcode9.3 沿着(1)重试一次
我看到你说使用 appium 自带的 test.app,test.app 的所有对象都能正常识别。inspector 工具获取到页面的层次结构,除了 Windows[1] 视图的元素信息之外,其他两个 Window 视图,可以看到展开元素信息么,如果不可以,先尝试定位一下 Appium 的问题还是 WebDriverAgent 问题,打开 WebDriverAgent,用 curl 命令调用 “坐标” 点击元素看看效果
换 xcode9.3 也是 ios10.3,问题还是存在;inspector 能获取到所有 windows 的信息,就是用 appium 操作不了,可以用坐标点击;我觉得 appium 跟 webDriverAgent 都没问题,是这个 app 的设计问题啊
visible 属性主要是通过控件的 frame 属性来计算的,可以看到上面的截图元素的 frame 属性可能都为空了,所以 visible 也为 false,也许是最新的 WebDriverAgent 获取控件树 tree 方法更改对你司的 App 有影响,建议替换 appium 的 WDA 为 facebook 的 WebDriverAgent 或降低 appium 版本查看元素的 frame 属性是否还为空,同时查看一下有问题的 WebDriverAgent 的日志是否有 Failed to fetch hit point for 错误提示或者贴一下 WebDriverAgent 日志文件,大致情况就比较清晰了
跟开发拿来整个工程,在 inspector 执行 getpagesource 时,xcode 控制台输出日志如下:
这是工程里面少了什么东西了吗?
(1)这里我也不太确定,也许是 RD 的代码不规范(2)getPageSource 实际是调用 tree 方法,tree 方法内部会通过调用 XCElementAttributes 类来调用元素的属性值,元素的属性值实际是从生产代码的 get 方法获取的,也许 RD 只实现了 set 方法,没有实现 get 方法引起的,后面几句是我猜的,让 RD 实现下上面提示元素的 get 方法看看效果吧?(3)替换 WebDriverAgent 为 facebook 的 WebDriverAgent 还是不行吗?
换了 facebook 的 WDA 还是不行,"也许 RD 只实现了 set 方法,没有实现 get 方法引起的",我也是这么猜的,对了,WDA 日志在哪里看?朋友,可以加微信联系吗?我的 v:略
找到解决办法了吗?目前也遇到相同的问题了
感觉和 IOS 的版本有关。 我遇到过同一个元素,IOS 10 版本的识别不了,而 IOS 11 版本的就能识别的现象。
建议换个 IOS 的版本试试吧,如果实在不愿意换,只能试试坐标点击操作了
想问楼主是怎么解决这个问题的? 我遇到这样的情况,困扰了很多天了,求指教~