Selenium Webdriver中找不到元素错误

时间:2016-08-06 04:13:51

标签: selenium

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  "/>&nbsp;
    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

2 个答案:

答案 0 :(得分:2)

实际上这是时间问题,当你发现它当时不会出现在DOM时,所以你应该尝试使用WebDriverWait等到这个元素可以如下: -

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("messageStackError")));
el.getText()

注意: - 确保在找到不在frameiframe内的元素之前。如果它在里面那么你需要切换frameiframe,然后才能找到driver.switchTo().frame("frame id or name");

元素

答案 1 :(得分:0)

我们还可以借助异常处理无限循环来解决此问题:

这是python中的代码。

    while 1:
        try:
            driver.find_element_by_class_name("class-name")
            break
        except:
            continue

如果没有异常,则循环将中断,否则,如果未找到元素等任何异常,则循环将继续进行,直到找到元素为止。