当我们执行selenium测试时,我们想在javascript错误进入我们的staging/production服务器之前就能发现它们。通过这一改变,我们发现了5个javascript的错误。除此之外,在升级任何javascript库时,它也会给我们带来巨大的信心。
在chromedriver中,有一种默认的方法来引发错误。
javascript的错误是作为SEVERE级错误提出的。因此,我们要过滤这些错误,并在出现这些错误时引发异常。最终的结果是在一个javascript错误中。
不幸的是,Firefoxgeckodriver没有这样的方法,因为日志接口还不是w3c规范。而我们使用geckodriver是出于其他各种原因。所以,我们想出了以下的技巧。
Selenium测试会在发现意外的javascript警报时出错。所以,我们可以通过以下方式在出现这种javascript错误时发出警报。
注意: 将代码添加到所有页面中正在加载的javascript文件中。
但这种方法的问题是,它也会在你的演进/生产环境中开始显示这样的警报,而我们不希望这样。为了解决这个问题,我们可以在执行Selenium测试时设置一个全局javascript变量,并在这里访问该变量以检查环境。我们使用Ruby on Rails作为我们的后端框架,我们根据环境在我们的布局文件中设置这个变量。
并修改javascript代码以使用这个变量。
**注意:**确保上述代码在调用下面的javascript之前被调用。
在javascript出错时的最终结果。
遇到javascript错误时的selenium测试失败原文发表于Nerd For Techon Medium,人们在这里通过强调和回应这个故事来继续对话。