在自动化我们的Web测试(C#,Selenium WebDriver 2.53.0,PhantomJS 2.1.1)时,我无法找到一些元素。当我查看父元素的innerHTML时,我看到,PhantomJS生成的html是1)不完整的,2)包含特殊字符 - 请参阅摘录。
<div class=\"buttons\">
<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" cl=""
ass=\"button_line\">
\r\n\t\t\t\t\t\t\t<tbody>
<tr>
\r\n\t\t\t\t\t\t\t\t<td></td>\r\n\t\t\t\t\t\t\t\t<td> </td>\r\n\t\t\t\t\t\t\t\t<td></td>\r\n\t\t\t\t\t\t\t\t<td> </td>\r\n\t\t\t\t\t\t\t\t<td></td>\r\n\t\t\t\t\t\t\t\t<td> </td>\r\n\t\t\t\t\t\t\t\t<td></td>\r\n\t\t\t\t\t\t\t\t<td> </td>\r\n\t\t\t\t\t\t\t\t<td width=\"100%\"> </td>\r\n\t\t\t\t\t\t\t
</tr>\r\n\t\t\t\t\t\t
</tbody>
</table>\r\n\t\t\t\t\t\t
</div>"
使用chrome,html代码更复杂 - 例如此表中还包含更多子元素,这些元素在摘录中。 PhantomJS太快了,所以有些代码没有机会更新吗? (如何强迫这个?)为什么会有这些角色? (我该如何解决这个问题?)
更新1: 正如所建议的那样,How to wait for element to load in selenium webdriver?可能会回答这个问题,但我认为这是另一个问题。正如我在其中一条评论中所建议的那样,我已经在使用ImplicitWait,它适用于所有其他浏览器。我甚至尝试过显式等待并将它用于PhantomJS中有问题的部分,但无济于事:(。
也许要添加更多信息:有问题的测试与使用PhantomJS中的javascript和页面刷新有关。
通常情况就像选择一些Overview表中的行,然后检查详细信息部分中的值(字段)(在此之前为空 - 没有显示任何字段)。