Selenium WebDriver Automation并需要以下查询的帮助 -
最初我在下面做了:wt=webdriverWait
和wd =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我可以获取文本,因为它保留了之前的工作状态。
请告知。
答案 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);