簡體   English   中英

我應該使用哪種方法(最快)來選擇元素?

[英]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

所以我猜使用UIAutomatorUIAutomation更快,但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 中找到它的方式。

您應該按順序執行此操作:

IDNameClassNameXPath 任何可用的先使用它。 您還可以要求您的開發人員為每個元素添加唯一的 id,這被認為是最好的方式。

好吧,只要可以,就使用 UiAutomator、UiAutomation(默認情況下,客戶端庫會這樣做 - 對於 Id/Name 等......,除了速度較慢的 XPath,所以當你沒有選擇時使用它。

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

我使用了一個函數,它接受字符串選擇器的參數和每個類型的自定義枚舉(id、xpath,甚至自定義類型,如 Android parentIdChildEditText-仍然使用 UiAutomator- 等) ->不要這樣做!

經過多年的經驗,如果可以,請使用 AccessibilityId :

  • for ios 是 appium xml 源中的名稱<=> ios dev 的 accessibilityIdentifier
  • 對於 android 是contentDesc <=> 相同的 appium 源/開發標識符

否則,對您來說是最簡單的選擇器(即使是帶有文本的 xpath,但最好還是擁有自定義測試 ID)。 對於這些類型的測試,選擇器性能是最后一個問題,維護和健壯性是重點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM