C#Selenium webdriver在Internet Explorer中捕获javascript错误

时间:2012-07-09 20:01:20

标签: c# javascript internet-explorer selenium webdriver

是否有可能捕获并记录可能通过IE中的测试运行发生的所有JS错误?

2 个答案:

答案 0 :(得分:4)

在提出这样的问题时,通常会有两类JavaScript错误。第一个是想要在自动化网站的源代码中捕获JavaScript错误。第二种类型的错误是尝试捕获由WebDriver代码执行的JavaScript代码中的JavaScript错误。不幸的是,没有一种很好的方法可以通过Selenium WebDriver捕获IE中的所有JavaScript错误。这是库的常见功能请求,在项目的issue tracker中有一个开放的增强功能。您可以使用一些技术来尽最大努力捕获JavaScript错误,但它们都有其局限性。

对于第一类JavaScript错误,您可以尝试注入一个挂钩页面中window.onError事件的脚本。这里的限制是它将错过在激活onError挂钩之前执行的脚本中发生的任何JavaScript错误。通常,这会遗漏在onLoad事件期间执行的脚本中发生的许多错误。

对于第二类错误,IE驱动程序执行JavaScript的方式,IE的脚本执行引擎不允许我们捕获执行中的错误。执行脚本时,如果出现错误,驱动程序会从脚本引擎收到一条HRESULT,其中显示“我已在UI中显示错误,因此我不打算再向您提供任何信息。”在这种情况下,增加驱动程序的日志记录级别只会告诉您发生了JavaScript错误,但没有任何其他有关JavaScript错误的信息。对于这类错误,开发团队正在积极调查可能的解决方案,但这里没有明确的前进道路,也没有任何时间框架可以改变这种行为。

答案 1 :(得分:1)

我相信你可以使用日志开关

--log-file=<logFile>

如文档中所述:http://code.google.com/p/selenium/wiki/InternetExplorerDriver