如何在Web驱动程序Java中处理NoTouchElementException。如果元素不可见,我不想结束测试

如何在Web驱动程序Java中处理NoTouchElementException。如果元素不可见,我不想结束测试,java,selenium,Java,Selenium,我正试图识别一个元素。如果元素在那里,我将单击并执行一些操作。如果元素不在那里,我只需要记录一条消息 我使用了try/catch,但是当元素不在那里时测试失败。有人能帮我吗。下面的代码在等待默认超时后引发异常 注意:相同的问题已经发布。但唯一的解决办法是使用findElements。我不想使用findElements,因为它需要很多时间 try{ elemToFind = driver.findelement(By.xpath(".//div[@id='rightitems']");

我正试图识别一个元素。如果元素在那里,我将单击并执行一些操作。如果元素不在那里,我只需要记录一条消息

我使用了
try
/
catch
,但是当元素不在那里时测试失败。有人能帮我吗。下面的代码在等待默认超时后引发异常

注意:相同的问题已经发布。但唯一的解决办法是使用
findElements
。我不想使用
findElements
,因为它需要很多时间

try{
    elemToFind = driver.findelement(By.xpath(".//div[@id='rightitems']");
    elementstatus = elemToFind.isDisplayed() || elemToFind.isEnabled();
    elemToFind.click();
} catch (NoSuchElementException e) {
    report.updateTestLog("Element is not available", Status.FAIL);
}

绝对要确保你已经进口了,而不是进口了


那么它就不能在缺少元素的情况下失败。如果是这样的话,它可能会失败,您可以通过在
单击()之前测试
元素状态来防止失败。

请确保您已导入且未导入

那么它就不能在缺少元素的情况下失败。如果是这样,它可能会失败,您可以通过在
单击()之前测试
元素状态来防止失败。

您可以使用

try 
{
    //Actions can be performed here
}
catch (RuntimeException ee)
{
    if (ee.toString().contains("NoSuchElementException"))
    {
        //steps
    }
}
你可以用

try 
{
    //Actions can be performed here
}
catch (RuntimeException ee)
{
    if (ee.toString().contains("NoSuchElementException"))
    {
        //steps
    }
}

“当元素不存在时测试失败”我可能有一段时间不在硒行业。除了什么例外,它会失败?如果元素存在,但不可见,则必须捕获或实际使用
elementstatus
的值……“我不想使用findElements,因为它需要很多时间。”这就是。。。不大可能发生的但是,您可以使用
By.id(“rightitems”)
,这比在旧浏览器上使用XPath要快得多。“元素不存在时测试失败”我可能有一段时间没有使用Selenium了。除了什么例外,它会失败?如果元素存在,但不可见,则必须捕获或实际使用
elementstatus
的值……“我不想使用findElements,因为它需要很多时间。”这就是。。。不大可能发生的但是,您可以使用
By.id(“rightitems”)
,这比在旧浏览器上使用XPath要快得多。谢谢。现在工作正常了。我还有一个问题,您能告诉我如何减少等待时间吗。@user3326175您是指隐式等待时间吗?你必须把它放在某个地方。不管怎样,谢谢你。现在工作正常了。我还有一个问题,您能告诉我如何减少等待时间吗。@user3326175您是指隐式等待时间吗?你必须把它放在某个地方。无论如何,使用