HTML代码:
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr class="messageStackError">
<td class="messageStackError">
<img src="images/icons/error.gif" border="0" alt="Error" title=" Error "/>
Error: Invalid administrator login attempt.</td>
</tr>
</table>
Selenium代码:
String message =driver.findElement(By.className("messageStackError")).getText();
我在Selenium webdriver中收到运行时错误
无法找到元素:.messageStackError(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:19毫秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html
答案 0 :(得分:2)
实际上这是时间问题,当你发现它当时不会出现在DOM
时,所以你应该尝试使用WebDriverWait
等到这个元素可以如下: -
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("messageStackError")));
el.getText()
注意: - 确保在找到不在frame
或iframe
内的元素之前。如果它在里面那么你需要切换frame
或iframe
,然后才能找到driver.switchTo().frame("frame id or name");
答案 1 :(得分:0)
我们还可以借助异常处理和无限循环来解决此问题:
这是python中的代码。
while 1:
try:
driver.find_element_by_class_name("class-name")
break
except:
continue
如果没有异常,则循环将中断,否则,如果未找到元素等任何异常,则循环将继续进行,直到找到元素为止。