我陷入了自动化的一个非常重要的部分,我无法解决。
我想执行以下代码,表明:
//if modal is displayed
if(driver.findElement(By.xpath("//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]")).isDisplayed()) {
//click yes
driver.findElement(By.xpath("//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.Button[1]")).click();
}
else {
//else click back
driver.findElement(By.xpath("//android.view.View[1]/android.widget.LinearLayout[1]/android.view.View[1]/android.widget.ImageButton[1]")).click();
}
问题在于,Appium没有识别/考虑isDisplayed()方法,卡在“if”子句上并开始搜索模态并且发生超时并且它根本不会进入下一步。
我也尝试使用下面的“size”方法而不是“isDisplayed”,但eclipse不接受“size”方法。
if(driver.findElement(By.xpath("//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]")).size()>0)
环境:
Appium版本:1.4.16
Eclipse版本:eclipse_Kelper64
请建议。 提前致谢
答案 0 :(得分:0)
if-statement
内,否则应处理else
。如果您在Android上使用“后退”按钮,则可以使用:
else {
driver.navigate().back(); //else clicking back
}
driver.findElement(<locate element>).size()
不是一个有效的方法。你可以尝试
driver.findElements(<locate element>).size();
s 与众不同,这两种方法的返回类型不同。一个返回Element
,而另一个返回List <Elements>
。
答案 1 :(得分:0)
你也可以这样做:
public boolean isElementPresent() {
try {
driver.findElementByXPath("");
return true;
} catch (Exception e) {
return false;
}
}
//if modal is displayed
if(isElementPresent()) {
//click yes
driver.findElement(By.xpath("//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.FrameLayout[1]//android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.Button[1]")).click();
}
else {
//else click back
driver.navigate.back();
}