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

Testing Internet Explorer中的Selenium远程控制HTML源代码提取,testing,selenium,Testing,Selenium,Selenium Remote Control有一个“get_html_source”方法,它以字符串形式返回当前页面的源 顺便说一句,这种方法在Firefox和Safari的所有情况下都有效。但在Internet Explorer中调用时,返回的源不正确 有人知道这是否是Selenium或Internet Explorer的错误,是否有修复方法吗?我99%确定get\u html\u source使用浏览器的innerHTML属性。InnerHTML返回浏览器对文档的内部表示,并且在平台之间始

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

顺便说一句,这种方法在Firefox和Safari的所有情况下都有效。但在Internet Explorer中调用时,返回的源不正确


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

我99%确定get\u html\u 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是罪魁祸首


可能的解决方法是通过HTMLTidy或其他更干净的工具运行源代码,如果您正在寻找有效的标记。我不知道有什么能让你在不同浏览器之间获得一致的渲染效果。

谢谢Alan。原来是不同浏览器的innerHTML实现有问题

对于与列表相关的标记,如
  • ,结束标记是可选的

    safari和firefox等浏览器使用各自的innerHTML方法获取结束标记,但internet explorer的innerHTML方法忽略了它们

    由于列表是结构化的,例如

      苹果 梨

    html源字符串上的正则表达式替换应该可以做到这一点