WebDriver尝试捕获按钮事件上的消息

时间:2014-12-23 18:55:45

标签: selenium-webdriver automation webdriver testng browser-automation

Selenium WebDriver Automation并需要以下查询的帮助 -

最初我在下面做了:wt=webdriverWaitwd =webdriver

wt.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[class=\"infoMessage\"],[class=\"errorMessage\"]")).getText();

wd.findElement(By.cssSelector("[class=\"infoMessage\"],[class=\"errorMessage\"]")).getText();

验证测试是通过还是失败,因为当事件成功时会触发 infoMessage ,而当事件导致失败时会 errorMessage

以上版本在早期版本中运行得非常好,但是现在最近有一个GUI更改以优化性能,因为InfoMessage会立即从DOM中闪烁出来并且WebDriver无法找到它或StaleReferenceException。 /强>

我试图通过引入显式延迟(Thread.sleep)和隐式延迟来解决 但我仍然无法追踪infoMessage。 请问您能否为我提供任何解决方案我附上下面的DOM。

<div id="packetSniffingMessages">
  <table id="packetSniffingMessages">
   <tbody>
      <tr class="**infoMessage**">
       <td>Action Successful </td>
    </tr>


<div id="packetSniffingMessages">
  <table id="packetSniffingMessages">
     <tbody>
        <tr class="**errorMessage**">
            <td>
                    Failed to Start
            </td>
        </tr>
    </tbody>
</table>

现在,正如前面提到的那样,当我点击提交按钮时,会显示 infoMessage ,但是在秒/毫秒中它会从DOM中闪烁。

我留下了。

<div id="packetSniffingMessages">

 <div id="packetSniffingMessages"></div>

</div>

注意:FOR,errorMessage我可以获取文本,因为它保留了之前的工作状态。

请告知。

1 个答案:

答案 0 :(得分:1)

尝试使用以下代码等待元素的可见性,然后提取文本:

WebDriverWait wt = new WebDriverWait(wd,10);
String text = wt.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[class=\"infoMessage\"],[class=\"errorMessage\"]"))).getText();
System.out.println(text);