以下問題都是以ios為背景:
1.
問題:
Case: 在頁面S1上,點擊元素A后,判讀B元素是否出現。
Detail:一開始通過Appium Inspector, 可以找到B元素,所以直接取該元素的name, 在代碼中寫入findElement(By.name("NameOfB"));
但是case始終運行失敗, 之后打開Appium Inspector, 通過name查找該元素, 發現inspector定位到了另一個非此名的元素上。即使重新刷新頁面去獲取新的dom, 也不起作用。
解決方案:
這種情況非常詭異, 目前不知道是不是Appium的bug。可換一種定位方式,如使用findElement(By.UIAutomation("XXX"))。
2.
問題:
與web和android相比,在ios上使用appium做自動化速度非常的慢。
解決方案:
- 不要使用xpath定位方式。
- 盡量少用findElement, 如果該值需要在之后繼續使用,可以把它賦值給一個變量。 也就是說盡可能減少與Appium server的交互。
3.
問題:
因為元素必須先出現在頁面上,才可以使用click/tap方法。所以這里先使用isDisplay()方法判讀該元素出現, 然后點擊該元素。但是測試下來,仍有可能即使isDisplay()返回的結果為true, 該元素還會因為不可見而點擊報錯。
解決方案:
雖然該元素的isDisplay()返回了true,但是該元素的中心點可能仍然不在屏幕上。 tap方法其實點擊的就是元素的中心點。可以使用swipe方法再滑動一下屏幕讓這個元素完全顯示在屏幕上。