如何在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您是指隐式等待时间吗?你必须把它放在某个地方。无论如何,使用