在驱动程序之间选择元素有很多不同的方法。我想知道哪一个是最快和最适合本机应用程序(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
所以我猜测使用UIAutomator
和UIAutomation
的速度更快,但selendroid
需要Android 2.3+
。
你好,为什么?你能给我一些 findElementByAndroidUIAutomator(String using)和 findElementByIosUIAutomation(String using)
的例子吗?我看到XPath选择器存在一些问题。从我的角度来看,使用findElement(By.name)
似乎很简单。
答案 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)
您应该按顺序执行此操作:
ID
,Name
,ClassName
,XPath
。无论什么可用,首先使用它。您还可以要求您的开发人员为每个元素添加唯一ID,这被认为是最佳方式。
答案 2 :(得分:0)
好吧,只要你可以使用UiAutomator,UiAutomation(默认情况下客户端libs为它做Id / Name等......,除了速度较慢的XPath之外,所以当你没有使用时,请使用它选择。
我使用一个函数,它接受参数字符串选择器和每个类型的自定义枚举(id,xpath,甚至自定义类型,如Android parentIdChildEditText -still使用UiAutomator-等... )