Appium iOS app 自动化测试,获取到 ID 和 xpath 却找不到元素

rmmrh · 2018年06月15日 · 最后由 John 回复于 2018年06月19日 · 3166 次阅读

python+appium-desktop+iOS 自动化测试,已获取到 IOS 手机界面元素的 accessibility id 和 xpath,但是通过 find_element_by_accessibility_id(value) 和 find_element_by_xpath(value) 却找不到元素,当然不是所有的元素都是这样,有的元素还是可以通过这种方法找到的。
不知道是什么原因?或者有没有更好的办法可以实现?
请各位前辈指点一下!!!🙏🙏🙏

附言 1  ·  2018年06月26日

已解决,是因为 value 值前面有几个空格,在获取 accessibility ID 时值前面没有,后来发现前面加了三个空格就找到元素了,谢谢大家的帮助!

共收到 5 条回复 时间 点赞

不知道你具体的情况如何,比如用的哪个版本,报了什么错误信息
一般知道到了 id 和 xpath,是可以找到元素的,找不到有可能是你这时候的元素没加载出来或者元素此刻还不在屏幕上

John 回复

谢谢您的回复!我用的 python:3.6、appium-desktop:1.7.2、IOS 手机:11.2、Xcode:9.2、MAC 电脑:macOS/10.13.3,日志信息如下。我让代码在很长时间内循环查找,明明看见元素已经出现在界面很长时间了,但是就是找不到元素。。。
[HTTP] --> POST /wd/hub/session/c1b57234-5a05-4c61-aeff-ad676ab2da4b/element {"using":"xpath","value":"//XCUIElementTypeOther[@name=\" 开关\"]","sessionId":"c1b57234-5a05-4c61-aeff-ad676ab2da4b"}
[MJSONWP] Calling AppiumDriver.findElement() with args: ["xpath","//XCUIElementTypeOther[@name=\" 开关\"]","c1b57234-5a05-4c61-aeff-ad676ab2da4b"]
[XCUITest] Executing command 'findElement'
[BaseDriver] Valid locator strategies for this request: xpath, id, name, class name, -ios predicate string, -ios class chain, accessibility id
[BaseDriver] Waiting up to 0 ms for condition
[JSONWP Proxy] Proxying [POST /element] to [POST http://localhost:8100/session/4A370756-5CEB-47D7-B7A6-C00FE4431D04/element] with body: {"using":"xpath","value":"//XCUIElementTypeOther[@name=\" 开关\"]"}
[JSONWP Proxy] Got response with status 200: {"value":{"using":"xpath","value":"//XCUIElementTypeOther[@name=\" 开关\"]","description":"unable to find an element"},"sessionId":"4A370756-5CEB-47D7-B7A6-C00FE4431D04","status":7}
[HTTP] <-- POST /wd/hub/session/c1b57234-5a05-4c61-aeff-ad676ab2da4b/element 500 1915 ms - 164
正常情况下 status 应该是 0,然后输出 [MJSONWP] Responding to client with driver.findElement() result: {"ELEMENT":"找到的元素的序列号"}

xpath 是绝对可以找到元素的,楼主可以看看是不是页面有细微的变化或者滑动页面导致 xpath 变化了,一般我厂都是 id 和 xpath 还有 aid,能解决 99% 的定位问题

可以先在 appium 里面试试你的定位方法是不是正确的

看你描述同样的方法别的元素可以,这个元素不行,方法应该没问题,只是元素没有,有没有试过重新去查询这个元素的 xpath,确认 xpath 是正确的,而且想起来我同样遇到过类似问题,同一个元素在中英文两种环境下,英文可以,中文环境里面@name变成了中文就不行了,找不到,实在不行尝试换个方式,没有 id,可以试试 find_element_by_ios_predicate,链接https://testerhome.com/topics/9405

rmmrh 关闭了讨论 06月26日 15:41
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册