Internet Explorer中的Selenium远程控制HTML源提取

时间:2008-09-24 03:46:28

标签: testing selenium

Selenium Remote Control有一个“get_html_source”方法,它以字符串形式返回当前页面的来源。

AFAIK,此方法适用于Firefox和Safari中的所有情况。但是当它在Internet Explorer中调用时,它会返回错误的源。

有人知道这是否是Selenium或Internet Explorer的错误,是否有修复?

2 个答案:

答案 0 :(得分:2)

我99%肯定get_html_source使用浏览器的innerHTML属性。 InnerHTML返回浏览器的文档内部表示,并且在平台之间始终不一致且“不稳定”。

您可以通过将以下onload属性临时添加到页面的body标记来进行测试。

onload="var oArea = document.createElement('textarea');oArea.rows=80;oArea.cols=80;oArea.value = document.getElementsByTagName('html')[0].innerHTML;document.getElementsByTagName('body')[0].appendChild(oArea)"

这将使用文档的innerHTML在页面底部添加一个文本区域。如果您看到相同的“不正确”HTML源代码,您就会知道IE是罪魁祸首。

如果您正在使用有效标记,则可能的解决方法是通过HTML Tidy或其他清理程序运行源代码。我不知道任何可以在浏览器之间提供一致渲染的内容。

答案 1 :(得分:1)

感谢艾伦。事实证明,不同浏览器的innerHTML实现存在问题。

对于与列表有关的标记,例如

  • ,结束标记是可选的。

    像safari和firefox这样的浏览器会使用各自的innerHTML方法获取结束标记,但是Internet Explorer的innerHTML方法会忽略它们。

    因为列表是结构化的,例如

    • 苹果

    html源代码字符串上的正则表达式替换应该可以解决问题。