我正在使用Selenium和Appium在开发脚本上工作,并且我遇到了硒定位器所挑选的错误元素的问题。
本质上,我想单击一个未分配ID的按钮;因此,我剩下的唯一一件事就是它的文字。
public Element button1(){
By locator = By.xpath("//android.widget.TextView[@text='button1']");
return new xElement(driver.findElement(locator), locator);
}
这是我获取Button1对象的定位方法。顺便说一句,屏幕上没有其他按钮在靠近Button 1的文本附近的任何文本。按钮上调用的方法click
具有格式:
public void clickBtn1(){
button1().click();
}
单击的按钮本质上具有文字"独轮车"。这只是为了澄清所按下的按钮的文字没有接近按钮1的值。
我多次使用UI Automator来确认Button1的实际文本值。奇怪的是脚本有时会起作用,所以我不确定问题是什么。
我还尝试了一种"等待启用"方法来考虑比赛条件。
尝试使用Appium Inspector搜索您的按钮。您可以输入XPath并搜索元素以查看其找到的内容。关于检查员的另一个好处是,您可以看到本机控制属性如何映射到Appium属性。"文本"可能不是您实际想要的属性。另外,您是否尝试过在按钮本身上搜索属性(而不是TextView)?
如果偶尔工作,请首先尝试使用XPath以外的其他元素。其次,在执行该动作之前先尝试一些睡眠命令,例如
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(ByLocator(locator)));