Appium 在使用 xPath 查找时查找错误的元素

Appium Finding Wrong Element when Finding With xPath

我正在使用 Selenium 和 Appium 编写开发脚本,我 运行 遇到了 Selenium 定位器拾取错误元素的问题。

本质上,我想点击一个没有分配 ID 的按钮;所以我唯一能用来识别它的就是它的文字。

public Element button1(){
    By locator = By.xpath("//android.widget.TextView[@text='button1']");
    return new xElement(driver.findElement(locator), locator);
}

这是我获取 button1 对象的定位器方法。顺便说一下,屏幕上没有其他按钮的文本与按钮 1 的文本接近。在按钮上调用的方法 click 具有以下格式:

public void clickBtn1(){
    button1().click();
}

被点击的按钮本质上有文本 "wheelbarrow"。这只是为了澄清被按下的按钮的文本没有接近按钮 1 的值。

我已经多次使用 UI 自动程序来确认按钮 1 的实际文本值。奇怪的是脚本偶尔会起作用,所以我不确定是什么问题。

我也试过 "wait for enabled" 方法来解决竞态条件。

尝试使用 Appium 检查器搜索您的按钮。您可以输入 xpath 并搜索元素以查看找到的内容。检查器的另一个好处是您可以看到本机控件属性如何映射到 Appium 属性。 'text' 可能不是您真正想要的属性。此外,您是否尝试过搜索 Button 本身的属性(而不是 TextView)?

如果它偶尔工作,首先尝试使用 xpath 以外的其他元素。其次,在执行

之类的操作之前尝试发出一些睡眠命令
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(ByLocator(locator)));