Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用xPath查找时,Appium查找错误的元素_Java_Android_Selenium_Xpath_Appium - Fatal编程技术网

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

Java 使用xPath查找时,Appium查找错误的元素,java,android,selenium,xpath,appium,Java,Android,Selenium,Xpath,Appium,我正在使用Selenium和Appium编写一个开发脚本,我遇到了Selenium定位器拾取错误元素的问题 基本上,我想单击一个没有分配ID的按钮;所以我唯一能识别它的就是它的文字 public Element button1(){ By locator = By.xpath("//android.widget.TextView[@text='button1']"); return new xElement(driver.findElement(locator), locator

我正在使用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的文本。在按钮上调用的方法
单击
,其格式如下:

public void clickBtn1(){
    button1().click();
}
被点击的按钮基本上有文本“手推车”。这只是为了澄清被按下的按钮在接近按钮1的值的地方没有文本

我已经多次使用UI自动机来确认button1的实际文本值。奇怪的是,脚本偶尔会工作,所以我不确定问题出在哪里


我还尝试了“等待启用”方法来解释比赛条件。

尝试使用Appium inspector搜索您的按钮。您可以键入xpath并搜索元素以查看它找到了什么。inspector的另一个优点是,您可以看到本机控件属性如何映射到Appium属性“文本”可能不是您实际需要的属性。另外,您是否尝试过搜索按钮本身的属性(而不是TextView)

如果它偶尔工作,首先尝试使用xpath以外的其他元素。第二,在你执行类似这样的动作之前,试着发出一些睡眠命令

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(ByLocator(locator)));
请看是否有用