Appium Appium 里 xpath 的[index]是咋确定的?

GUO · 2013年12月04日 · 最后由 tomchen 回复于 2013年12月19日 · 4130 次阅读

applium 里 xpath 确定位置的 index 是怎么确定的?
我从 page_source 里按 children 的顺序确定的 index 好像和 inspector 里看的 xpath 的值不一样

共收到 25 条回复 时间 点赞
GUO #1 · 2013年12月04日 Author

感觉是按 type 分的

#guo 1 楼 是滴,目前应用来看,是按照控件的 Type 来分的

//frame/relative/button[2] 基于某个 compont 的次序, 而且是从 1 开始

GUO #4 · 2013年12月04日 Author

#3 楼 @seveniruby 越看越乱了,page_source 里面好像还包含上一个窗口的控件信息,visible=false
element 的 index 好像只算了 visible=true 的,但是不应该啊,如果本身就有些隐藏的控件咋区分...
不知道这个值和 element.is_displayed() 属性是不是一回事

xpath 是 appium 的一个大坑, 这方面得小心点, 还不是全功能的支持, 官方还在改进.
appium 是先把 xpath 解析为一个为描述结构, 说明查找的层级和 index, 然后传给了 andnroid,. android 上再根据这个规则解析.

具体的特征, 可以测试下. 官方文档不是太全

GUO #6 · 2013年12月04日 Author

#5 楼 @seveniruby 恩,不好捣鼓,纯靠试
单纯判断属性不准,还得加上位置,发现不可用的控件位置会是负的

#6 楼 @guo 在官方的测试用例中, 已经有一些 xpath 的例子, 可以参考下.
我目前用起来还没遇到什么问题, 尽量别学很复杂的 xpath 就好
期待官方出全功能的支持

#7 楼 @seveniruby 可以自动获取所有元素的名称的吗?

#8 楼 @dippa //* 就可以获得所有元素, //*[@clickable=true] 可以遍历所有可被点击的元素.

#9 楼 @seveniruby java 里面可以吗? 我查过 RemoteWebDriver 以及 By 这两个类的方法好像没发现可以遍历出所有元素的 name 的

#10 楼 @dippa webdriver 协议的, 所以都可以, java 里面如何使用我不了解, java 应该也有 xpath 的支持.你得自己看看了

#11 楼 @seveniruby 谢谢大神呀,已经解决 。
贴出代码 供找资料的参考
List elements = wd.findElementsByXPath("//*");

#12 楼 @dippa xpath 的支持还不完善,只是支持极少的语义。一些复杂的,比如找父节点,或者层级多点的查找都会报错。不过 contains 这个是支持的,所以一般来说也够用了。另外对特殊符号的支持也有些问题。。。比如减号,反斜杠

#13 楼 @spikeshen 官方已经有了完全支持的版本 还没正式合并

#14 楼 @seveniruby 我靠,这么牛!这消息太好了!!啥时候能正式合并?

#15 楼 @spikeshen 还在完善中, 官方已经给我那个分支的地址了.等待吧, 1.0 版本还没出那, 到时候肯定会更好的. 好像说是年前争取搞定.

#16 楼 @seveniruby 您好,我现在已经能通过 Appium 正常启动 App 了,可是仅仅局限于官方的 DEMO,我想运行自己 App,该如何进行调试呢?

#16 楼 @seveniruby 我分不清究竟是官方还没完善好,还是我自己的 app 的问题。

#16 楼 @seveniruby 所以比较迷惑

#18 楼 @dippa 如果不是通用问题, 这个只能你自己解决了, 一般还是配置或者环境的问题, 如果不能用, appium 也不会发布了. 很多人都在应用中了. 我的环境跟你差异太大, 只能帮到这了.

#19 楼 @dippa 你现在还刚开始, 你了解的越多, 迷惑就会越少了. 出现问题可以不断追查. 功夫不负有心人的. 现在的坑就是你将来收获的经验和成长. 加油

#21 楼 @seveniruby 嗯嗯,是的,谢谢!我刚才终于把环境给配出来了,xcode5.0.0 appium0.12.3 OS X10.8.5 ,并且可以运行自己的 APP,但是问题又出来了,那个 Inspector 里面滑动(Swipe)的功能好像不太好用

#22 楼 @dippa 之前的错误是因为什么原因?

#23 楼 @seveniruby 其实我也不清楚,我觉得这个错误好像是有一定几率出现的,运行的时候不是每次都能够成功运行的,我刚才按着这个顺序来进行测试的 ,Appium 0.11.3 xcode 5.0.0 可以运行 官方的 DEMO,不能运行自己的 APP,然后我更新 Appium0.12.3 xcode5.0.0 可以运行 官方的 DEMO,可以运行自己的 APP,但是我昨天试的时候却官方 DEMO,自己的 APP 两个都不行。应该是我的操作失误。

每一个组合都是做过几次的测试,第二个组合是进行过两次的测试,第二次可以。

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