Assert.assertFalse(driver.findElement(By.xpath("element's xpath")).isDisplayed(),
"Bug!! The element is appeared");
当我使用上面的脚本运行我的代码时,我的脚本失败并出现“找不到元素,(在元素的 xpath 中提到)”这样的语句现在我必须做什么?我的想法是验证屏幕中不存在该元素
Assert.assertFalse(driver.findElement(By.xpath("element's xpath")).isDisplayed(),
"Bug!! The element is appeared");
当我使用上面的脚本运行我的代码时,我的脚本失败并出现“找不到元素,(在元素的 xpath 中提到)”这样的语句现在我必须做什么?我的想法是验证屏幕中不存在该元素
我看到很久以前就有人问过这个问题,但是也许正在寻找类似问题的解决方案的人现在会发现它很有用。我有某种方法来处理此类问题,不确定这是否是一种好方法,但至少它是有意义的并且可以完成工作。
首先,我通常定义一个单独的方法来查找这些元素:
private static WebElement element = null;
public static WebElement findYourElement(WebDriver driver) {
try {
element = driver.findElement(By.xpath("your_xpath_here"));
}
catch(NoSuchElementException e) {
System.out.println(e.getMessage());
element = null;
return element;
}
return element;
}
您可以在此处看到,如果抛出可能的 NoSuchElementException,它就会被捕获。在异常情况下,“元素”的值也设置为 null,因为在我的程序中可能有来自以前元素的值存储在这里,我们在这里没有任何其他不相关的元素。
接下来是断言:
Assert.assertFalse(findYourElement != null, "Bug!! The element is there!"
此处,如果 findYourElement 返回的元素不为空,则 assertFalse 方法将失败,从 element != null 比较产生 True 结果并使 assertFalse 失败,因为它期望具有 false 值才能继续。你也可以去:
Assert.assertTrue(findYourElement = null, "Bug!! The element is there!"
我认为这样的解决方案有助于使事情井井有条,但另一方面它可能在代码量方面更大并且也更复杂。这还取决于您对 Java 的掌握程度以及您是否愿意处理异常。我自己不是 Java 专家,因此对改进我当前解决方案的任何贡献都将不胜感激!
如果找不到匹配的元素,findElement 会抛出异常,因此您的测试将因 selenium 异常而失败,而不是 JUnit。
您可以使用findElements(不会引发异常)并检查返回的列表长度是否等于 0
做这个小改动,绝对有效
Assert.assertTrue(driver.findElements(By.xpath("element's xpath")).size()<1;,
"Bug!! The element is appeared");