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条经验 获得超7个赞
我在 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
添加回答
举报