我正在使用Selenium和Appium开发一个开发脚本,我遇到了Selenium Locator拾取错误元素的问题。
基本上,我想点击没有分配ID的按钮;所以我唯一要留下的就是它的文字。
public Element button1(){
By locator = By.xpath("//android.widget.TextView[@text='button1']");
return new xElement(driver.findElement(locator), locator);
}
这是我获取button1对象的定位器方法。顺便说一句,屏幕上没有其他按钮在button1的文本附近有任何文本。调用按钮的方法click
具有以下格式:
public void clickBtn1(){
button1().click();
}
点击的按钮基本上有文字“独轮车”。这只是为了澄清被按下的按钮的文字没有接近button1的值。
我多次使用UI automator来确认button1的实际文本值。奇怪的是脚本偶尔会起作用,所以我不确定问题是什么。
我还尝试了“等待启用”方法来解释竞争条件。
答案 0 :(得分:1)
尝试使用Appium检查器搜索您的按钮。您可以键入xpath并搜索元素以查看它找到的内容。检查器的另一个好处是您可以看到本机控件属性如何映射到Appium属性。 '文本'可能不是您真正想要的属性。此外,您是否尝试在Button本身(而不是TextView)上搜索属性?
答案 1 :(得分:1)
如果它偶尔工作,首先尝试使用除xpath之外的其他元素。其次,在执行
之类的操作之前尝试给出一些睡眠命令WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(ByLocator(locator)));