adi*_*ggo 3 css xpath css-selectors appium
我目前正在进行移动UI自动化测试.我们的应用程序是基于Cordova的混合移动应用程序.所以我打算用appium来运行一些自动化测试.
我需要弄清楚的一件事是如何找到页面中的所有元素.
我以前曾计划使用xpath来查找所有元素,因为我们可以通过appium检查器检测xpath.但是,我的同事不同意我的意见,因为他想使用css选择器作为查找移动应用程序中所有元素的关键.但对于appium,它不会在检查器中显示css选择器.
所以,我只是好奇哪种方法应该更好?
谢谢
下面是我对Locators的细分以及我喜欢如何/为何使用iOS Automation.所有这些都是基于我在Native iOS应用程序中的工作而体验的.
巨型免责声明: 我对科尔多瓦一无所知.我听说如果有不是原生的类名,UIAutomation就会存在问题.如果是这种情况,我建议坚持使用辅助功能ID和类名定位器策略.
Appium中不存在CSS选择器.
你最接近CSS选择器的是类名选择器.我没有真正使用它们,因为UIAutomation给了我我需要的东西,并允许我检查定位器策略中元素的名称/文本.
你不想使用XPath,因为它在iOS上很慢而且很有趣.(它有时会返回一个完全不正确的元素).它有时会导致仪器无故失败.强烈建议远离XPath.
当UIAutomation无法找到元素时,您应该使用它.它比XPath快,但是当UIAutomation不能让你处于某个元素时(.actionSheets()我认为它已经坏了.我在操作表启动时使用它,我需要.click()一个按钮)
您应该使用Apple的UIAutomation,2框架,因为它是iOS中最快的原生解决方案.
UIAutomation框架允许您使用类和层次结构来指定所需的元素.使用Appium时,请使用find_elements_by_ios_uiautomationwebdriver上的功能.
这里使用示例
但是示例用法并没有告诉你UIAutomation真的有多强大.我遇到的一个常见问题是当屏幕上有多个tableview时,试图查找tableview的所有单元格.
**Sample View Hierarchy**
<application>
<window>
<table name="Items">
<cell name="Foo, not in cart"></cell>
</table>
<table name="Cart">
<cell name="Bar. IM IN YOUR CART"></cell>
</table>
</window>
</application>
Run Code Online (Sandbox Code Playgroud)
现在好了,找到数组中的那些单元格:
value = '.tableviews()["Cart"].cells()'
cells = driver.find_elements_by_ios_uiautomation(value)
Run Code Online (Sandbox Code Playgroud)
额外阅读: 超越谓词的指南以及为什么它们很棒
Inspector中有一个很好的位置(在Appium.app GUI中提供),它可以让你尝试任何你想要的定位器策略和值.你应该使用它.它非常有帮助.
