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

Java 我应该使用哪种方法(最快)来选择元素?,java,android,ios,selector,appium,Java,Android,Ios,Selector,Appium,有很多不同的方法来选择驱动程序之间的元素。我想知道哪一款最快,最适合本地应用(iOS和Android) 对于Appium驱动程序类,有: findElementByAccessibilityId(String using) findElement(org.openqa.selenium.By by) //with ById/Xpath/Name/ClassName... 对于移动类,有: findElementByAccessibilityId(String using) findElem

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

对于Appium驱动程序类,有:

findElementByAccessibilityId(String using)
findElement(org.openqa.selenium.By by) //with ById/Xpath/Name/ClassName...
对于移动类,有:

findElementByAccessibilityId(String using)
findElement(org.openqa.selenium.By by) //with ById/Xpath/Name/ClassName...
Android和iOS驱动程序类有:

findElementByAndroidUIAutomator(String using)
findElementByIosUIAutomation(String using)
findElementById();
findElementByXPath();
findElementById(); //css, className etc... -> WebElement which can be cast in mobileElement
使用RemoteWebDriver类有:

findElementByAndroidUIAutomator(String using)
findElementByIosUIAutomation(String using)
findElementById();
findElementByXPath();
findElementById(); //css, className etc... -> WebElement which can be cast in mobileElement
所以我猜使用
UIAutomator
UIAutomation
更快,但是
selendroid
Android 2.3+
所需要的

你是怎么做的,为什么?您能为我提供一些findElementByAndroidUIAutomator(使用字符串)和findElementByIosUIAutomation(使用字符串)的示例吗


我发现XPath选择器存在一些问题。在我看来,使用
findElement(By.name)
似乎非常简单

您应该按照以下顺序操作:


ID
Name
ClassName
XPath
。任何可用的都要先使用它。你也可以让你的开发人员为每个元素添加唯一的ID,这是最好的方法。

< p>嗯,只要你可以使用uiAutoUnter,UIAutoDube(默认情况下,客户端lib就可以做ID/NoD……),除了XPath更慢,所以在你没有选择的时候使用它。 看

我使用一个函数,该函数为每种类型(id、xpath,甚至像Android parentIdChildEditText这样的自定义类型,仍然使用UiAutomator-,等等)引入参数字符串选择器和自定义枚举->不要这样做!

经过多年的经验,如果可以,只需使用AccessibilityId即可: 哪个

  • for ios在您的appium xml源中是名称 ios开发人员的accessibilityIdentifier
  • 对于android,是contentDesc相同的应用程序源/开发标识符
否则,最简单的选择器(即使是带有文本的xpath,最好有自定义测试id)。对于这些类型的测试,选择器性能是您的最后一个问题,维护和健壮性是要点

你是怎么做的?为什么?你能为我提供一些findElementByAndroidUIAutomator(使用字符串)和findElementByIosUIAutomation(使用字符串)的例子吗


其中“org.zwanoo.android.speedtest:id/upload”是包id和元素id。这是您可以在UiAutomatorviewer或Appium检查器中找到它的方式。

非常感谢您的回答,但它并没有真正帮助我:p.这是一个如何不做的方法吗?.findElementByAndroidUIAutomator显示在iOSDriver和AndroidDriver上,这些类扩展了AppiumDriver,并且作为一个consequence:一种新的、更快的元素定位方法。