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

时间:2020-03-06 14:38:29  来源:igfitidea点击:

Selenium远程控制具有" get_html_source"方法,该方法以字符串形式返回当前页面的源。

AFAIK,此方法在Firefox和Safari中均适用。但是,当在Internet Explorer中调用它时,它将返回不正确的源。

有谁知道这是Selenium还是Internet Explorer的错误,是否有修复程序?

解决方案

我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或者其他一些清除程序来运行源。我不知道有什么可以在浏览器之间提供一致的呈现。

谢谢艾伦。事实证明,不同的浏览器对innerHTML的实现是一个问题。

用于与列表有关的标签,例如

在html源字符串上进行正则表达式替换应该可以解决问题。