我应该使用哪种方法(最快)来选择元素?

时间:2015-02-16 17:53:17

标签: java android ios selector appium

在驱动程序之间选择元素有很多不同的方法。我想知道哪一个是最快和最适合本机应用程序(iOS和Android)。

Appium Driver类有:

findElementByAccessibilityId(String using)

使用Mobile类有:

findElement(org.openqa.selenium.By by) //with ById/Xpath/Name/ClassName...

Android和iOS驱动程序类有:

findElementByAndroidUIAutomator(String using)
findElementByIosUIAutomation(String using)

使用RemoteWebDriver类有:

findElementById();
findElementByXPath();
findElementById(); //css, className etc... -> WebElement which can be cast in mobileElement

所以我猜测使用UIAutomatorUIAutomation的速度更快,但selendroid需要Android 2.3+

你好,为什么?你能给我一些 findElementByAndroidUIAutomator(String using) findElementByIosUIAutomation(String using)

的例子吗?

我看到XPath选择器存在一些问题。从我的角度来看,使用findElement(By.name)似乎很简单。

3 个答案:

答案 0 :(得分:1)

您如何做?为什么?您能为我提供一些有关findElementByAndroidUIAutomator(使用字符串的示例)和findElementByIosUIAutomation(使用字符串的示例)的示例吗?

AndroidDriver driver = new AndroidDriver();
WebElement element = driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"org.zwanoo.android.speedtest:id/upload\")");

其中“ org.zwanoo.android.speedtest:id / upload”是程序包ID和您的元素ID。这样便可以在UiAutomatorviewer或Appium Inspector中找到它。

答案 1 :(得分:0)

您应该按顺序执行此操作:

IDNameClassNameXPath。无论什么可用,首先使用它。您还可以要求您的开发人员为每个元素添加唯一ID,这被认为是最佳方式。

答案 2 :(得分:0)

好吧,只要你可以使用UiAutomator,UiAutomation(默认情况下客户端libs为它做Id / Name等......,除了速度较慢的XPath之外,所以当你没有使用时,请使用它选择。

我使用一个函数,它接受参数字符串选择器和每个类型的自定义枚举(id,xpath,甚至自定义类型,如Android parentIdChildEditText -still使用UiAutomator-等... )

请参阅https://github.com/appium/java-client/issues/158