[英]Which method should I use (fastest) to select element?
那么有很多不同的方法可以在驅動程序之間選擇元素。 我想知道哪個最快,最適合原生應用程序(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)
似乎很簡單。
你是怎么做的?為什么? 你能給我提供一些 findElementByAndroidUIAutomator(String using) 和 findElementByIosUIAutomation(String using) 的例子嗎?
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 中找到它的方式。
您應該按順序執行此操作:
ID
, Name
, ClassName
, XPath
。 任何可用的先使用它。 您還可以要求您的開發人員為每個元素添加唯一的 id,這被認為是最好的方式。
好吧,只要可以,就使用 UiAutomator、UiAutomation(默認情況下,客戶端庫會這樣做 - 對於 Id/Name 等......,除了速度較慢的 XPath,所以當你沒有選擇時使用它。
見https://github.com/appium/java-client/issues/158
我使用了一個函數,它接受字符串選擇器的參數和每個類型的自定義枚舉(id、xpath,甚至自定義類型,如 Android parentIdChildEditText-仍然使用 UiAutomator- 等) ->不要這樣做!
經過多年的經驗,如果可以,請使用 AccessibilityId :
否則,對您來說是最簡單的選擇器(即使是帶有文本的 xpath,但最好還是擁有自定義測試 ID)。 對於這些類型的測試,選擇器性能是最后一個問題,維護和健壯性是重點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.