找不到元素,继续测试

时间:2018-03-31 12:59:05

标签: java selenium qa

我有一个页面,在主页之前随机显示窗口,进入网站,我有时需要填写表格,所以我使用:

@FindBy(xpath = "") public WebElement element;

然后我尝试实施解决方案,但它失败了。

if(element.isDisplayed()){ 
element.click();
}else if {
do something else // if not Displayed do something else and get test true?
}

获取错误:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element

在我的项目中,我使用java,cucumber nad testNG。我不知道该怎么做,当它在页面上找不到表单时,它会继续测试。也许我应该做更多的方法或场景?

3 个答案:

答案 0 :(得分:0)

错误消息表示找不到该元素。

很少,

  1. 您是否拥有该元素的正确选择器?
  2. 网页是使用JQuery还是AngularJS?如果是这样,您需要等待它们加载
  3. 你在使用任何类型的等待吗?在检查页面上是否存在元素之前? (例如ImplicitWait,FluentWait,Thread.sleep [bad practice])
  4. 试试这个 - > driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);

    等待元素加载最多10秒后再找不到它。

答案 1 :(得分:0)

1)你需要使用这样的东西:
public WebElement [] elements = driver.findElementsBy(xpath = "The Xpath you are looking for");
if (elements)
如果随机显示的窗口出现,您的列表将不为空,将包含您要查找的元素。否则列表将为空 您的代码失败,因为您正在寻找页面中并不总是存在的元素 2)您也可以使用Try - Catch

答案 2 :(得分:0)

这是解决方案:

@FindAll(@FindBy(xpath = ""))
    List<WebElement> buttonelements

if(!buttonelements.isEmpty()){
'code here'
}

问题原因:

如果找不到匹配的元素,则使用FindBy和方法isDisplayed()会抛出NoSuchElementException。

使用FindAll和方法isEmpty()不要抛出任何suchexception,它将返回空列表。