今天困扰我的一个问题终于解决了
robot框架默认的xpth定位方式是不支持带括号运算的xpth表达式的,例如:
(//*[@content-desc="iv_message_icon_2124"])[2] 这种带括号的xpth是不支持的
但是很奇怪的是appium原生是支持这种定位方式的,运行时报的错误也让人比较费解
不支持此种前缀
这个时候其实已经提示你了,运行的时候,对这种xpath定位表达式进行了拆分,导致定位不到
所以我们需要找到框架代码
从这里我们可以看出通过字符串里的起始字符串来进行判断分割的,所以我们将startwith替换成__contains__就可以了
elementfinder.py def _parse_locator(self, locator): prefix = None criteria = locator if not locator.__contains__('//'): locator_parts = locator.partition('=') if len(locator_parts[1]) > 0: prefix = locator_parts[0].strip().lower() criteria = locator_parts[2].strip() return (prefix, criteria)
但是还需要修改一个地方
至此就大功告成,快乐的用xpath进行定位吧