问答 appium xpath 定位 (android.support.v7.app.ActionBar$Tab)

erinet · 2017年04月26日 · 最后由 harrysong 回复于 2017年05月09日 · 2447 次阅读

请教问题:
app 里面有个元素是 android.support.v7.app.ActionBar$Tab
我的 xpath 是这么写的:
xpath = //android.widget.HorizontalScrollView[@resource-id='com.xxx.xxxker:id/main_tabs']/android.widget.LinearLayout/android.support.v7.app.ActionBar$Tab[5]
执行的时候 定位不到元素
LOG 日志显示:[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":32,"value":"javax.xml.transform.TransformerException: Extra illegal tokens: '$', 'Tab', '[', '5', ']'"}

这里有个类似问题https://discuss.appium.io/t/javax-xml-transform-transformerexception-extra-illegal-tokens-c/14855,没有回答

请问如果处理,感觉是 $ 有问题,是我用 python 写的自动化。 请问有人知道这是什么问题吗 如何解决

共收到 4 条回复 时间 点赞

//android.widget.HorizontalScrollView[@resource-id='com.xxx.xxxker:id/main_tabs']/android.widget.LinearLayout/android.support.v7.app.ActionBar$Tab[5]

不一定这么写啊. 模糊匹配就可以了

//[@resource-id='com.xxx.xxxker:id/main_tabs']/[contains(name(), 'ActionBar' )]
或者更简单的方式
//[contains(@resource-id, 'main_labs')]/[contains(name(), 'ActionBar' )][5]

可以开个转帖 讲讲 xpath 定位了

dabao 回复

恩, xpath 和 jsonpath 做自动化和接口测试都很重要的, 改天让老徐搞个公开课吧.

Take a look at the XPath Recommendation(https://www.w3.org/TR/xpath/), and you'll see that it defines a literal as:

[29] Literal ::= '"' ["]* '"'

| "'" [']* "'"
and lexical structure with '$'
[36] VariableReference ::= '$'

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册