4 回答

TA貢獻1873條經驗 獲得超9個贊
Appium 不是 Selenium:它們都使用 JSON 有線協議實現并且具有相似的 API,但并不相同:
原生安卓應用支持的定位器策略:
id(resource-id 查看屬性);
accessbilityId(內容描述視圖屬性);
uiAutomator (更好地閱讀UiSelector);
className(UI 組件類型);
XPath。
因此,您不能By.name
對 Android 驅動程序會話使用定位器策略,它不受支持。
為方便起見,我建議在 Appium 原生測試中使用MobileBy
代替By
:您將獲得正確的選項。

TA貢獻2039條經驗 獲得超8個贊
我在 2020 年 2 月 3 日嘗試了這種方法,并且能夠成功執行。我必須做出的改變是將 io.appium 更新到 7.2.0。
我的案例/測試中的先決條件:Windows 機器,創建 Nexus S AVD,啟動 Appium 和 AVD。
最重要的是
URL url = new URL("http://127.0.0.1:4723/wd/hub");
driver = new AndroidDriver<MobileElement>(url, capabilities);
MobileElement two =(MobileElement)driver.findElement(By.id("com.android.calculator2:id/digit_9"));
two.click();

TA貢獻1784條經驗 獲得超8個贊
By.name("text")從此被刪除Appium v1.5.0。
此外,Appium 不支持原生應用程序中不支持cssSelector像 Selenium 中存在的策略 + 方法,因為 Android 的底層單元測試框架不支持這些方法,即.getAttribute("color/background")UIAutomator
您可以使用以下選項單擊計算器的數字
driver.findElement(By.id(“com.android.calculator2:id/digit5”)).click();
driver.findElement(By.xpath(“//android.widget.Button[contains(@resource-id,'digit5') and @text='5']”)).click();
driver.findElementByAccessibilityId(“plus”).click();
driver.findElement(By.xpath(“//android.widget.Button[@text='5']”)).click();

TA貢獻1890條經驗 獲得超9個贊
始終使用類名和文本名來創建 xpath。
const loginbutton=await driver.$("//android.widget.TextView[@text='login']")
await loginbutton.click()
驅動來自能力
class name --> android.widget.TextView
text name -->login
所以總是使用類名和文本名來創建一個更好更好的 xpath。
適用于所有 android+appium+wdio
添加回答
舉報