使用assert检查元素是否在屏幕上,发生NoSuchElementException

时间:2017-09-13 12:15:44

标签: java selenium appium assert

我正在尝试使用assert函数检查元素是否在屏幕上。 我正在将Appium和Java用于我的测试应用程序(AndroidDriver)。 我期望的是,如果元素在屏幕上,则返回1,否则返回0。 当我尝试这个时;

assert driver.findElementById("com.tmob.AveaOIM:id/layout_ayarlar_ovit").isDisplayed() : "It is not on the screen";

isDisplayed()是一个布尔函数,但由于

而无效
  

NoSuchElementException:无法在页面上找到元素   使用给定的搜索参数。

如何使用断言检查此元素?

4 个答案:

答案 0 :(得分:1)

尝试使用以下代码:

driver.findElementById("layout_ayarlar_ovit").isDisplayed() 

答案 1 :(得分:0)

我遇到了同样的问题并将其用作解决方法

我建议你应该使用页面工厂 把它作为构造函数

public constructorName(){         PageFactory.initElements(driver,this);}

@FindBy(的xpath =" //&#34)

私有WebElement anyName;

如果(anyname.isDisplayed){

System.out.println("元素存在"); }

答案 2 :(得分:0)

在isTrue变量(或您的首选项的名称)中分配返回值,并在下一行中使用assert和消息:

boolean isTrue = driver.findElementById(“com.tmob.AveaOIM:id / layout_ayarlar_ovit”)。isDisplayed(); Assert.assertTrue(true,isTrue,“找不到元素”);

如果断言失败,输出将是“找不到元素” 如果断言通过,则测试将继续到下一行。

答案 3 :(得分:0)

try {
  driver.findElement(By.xpath("com.tmob.AveaOIM:id/layout_ayarlar_ovit"));
}catch (java.util.NoSuchElementException e) {
  Assert.fail("Error on Page:element not found");
}
Assert.assertTrue(  driver.findElement(By.xpath("com.tmob.AveaOIM:id/layout_ayarlar_ovit")).isDisplayed());