这是代码
for (loopVal = 1; loopVal < endVal; loopVal++) {
MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));
String followOrNot = followButton.getText();
System.out.println(followOrNot + " " + loopVal);
}
如果找不到MobileElement
followButton
,则它将引发错误,并且其余代码将不执行我需要在程序在
followButton
上运行.getText()
之前检查followButton
是否存在如果我尝试用try-catch块包围
followButton
try {
MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));
} catch(org.openqa.selenium.NoSuchElementException e) {
//handle error
}
然后我在
String followOrNot.getText()
上看到一个错误,说followButton无法解析
如果我尝试在
followButton
上使用.isEmpty MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));
if(driver.findElements(followButton).isEmpty()) {
//handle error
}
然后我在
findElements
上看到一个错误,说AppiumDriver类型的方法findElements(By)不适用于参数(MobileElement)
如果我尝试在
.isDisplayed
上使用followButton
MobileElement followButton = (MobileElement) driver.findElement(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']"));
if(followButton.isDisplayed()) {
//do nothing
} else {
//handle error
}
那么现在的问题是,如果未找到
followButton
,则将引发错误,认为其余代码无效我试图在
followButton
上执行任何其他操作之前先验证followButton
是否存在我问了一个与此问题类似的问题,但没有得到有帮助的答案,我唯一的选择是再次询问。
有人可以帮忙吗?
最佳答案
您可以通过先获取该元素的列表,然后检查列表大小来检查页面上是否存在该元素。如果大小大于零,则该元素存在,否则不存在。
您可以这样做:
if(driver.findElements(By.xpath("//android.widget.ListView[@index='0']//android.widget.FrameLayout[@index='"+loopVal+"']//android.widget.LinearLayout[@index='0']//android.widget.FrameLayout[@index='2']//android.widget.TextView[@index='0']")).size()>0){
// Element is present
// Do the operations here
}
else{
// Element is not present
}