Appium 使用 findElementByClassName 遇到的一点问题

· 2016年12月27日 · 最后由 恒温 回复于 2016年12月29日 · 1997 次阅读

原来用 tagName 的,发现这个方法过时了,结果用 className 的时候发现一个神奇的现象,通过这两个名称都可以找到元素,有人能告诉我为什么吗?
driver.findElements(By.className("UIAButton"))
driver.findElements(By.className("XCUIElementTypeButton"))

共收到 4 条回复 时间 点赞
#2 · 2016年12月29日 Author

还是我自己来回答这个问题吧,UIAButton 是 UIAutomation 框架的标签命名,XCUIElementTypeButton 是新框架 XCUIText 框架中的命名,appium 对这两种方式都支持

#1 楼 @wxy_fight 是怎么实现都支持的?

@Lihuazhang appium 相当于一个翻译工具吧,将不同客户端产生的测试脚本翻译成对应系统测试框架的语言,1.6 之前是只支持 UIAutomation,1.6 开始支持 XCUITest,具体怎么实现我还没看,不过可以把迁移文档里的一段话给你参考。
With XCUITest, Apple has given different class names to the UI elements which make up the view hierarchy. For example, UIAButton is now XCUIElementTypeButton. In many cases, there is a direct mapping between these two classes. If you use the class name locator strategy to find elements, Appium 1.6 will rewrite the selector for you. Likewise, if you use the xpath locator strategy, Appium 1.6 will find any UIA* elements in your XPath string and rewrite them appropriately.

#3 楼 @wxy_fight 能再看下源码就灵了。

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