开发人员最近询问我们的测试是否可以在每次打开页面时执行一些javascript。有关详细信息,请参阅bug 44299。
执行javascript是微不足道的:
browser.execute_script('return mw.loader.getModuleNames().filter(function (module) { return mw.loader.getState(module) === "error"; }).length === 0;')
#=> true
我们正在使用page-object的#visit_page
来打开网页。确保每次打开页面时执行上述示例中的javascript的简单方法是修改#visit_page
方法。
alias_method
链(来自问题4470108)看起来像是一种简单的方法。
有更好的方法吗?
答案 0 :(得分:2)
您可以在名为initialize_page
的页面对象类上创建一个方法。页面加载后将立即调用此方法。在该方法中,您可以调用execute_script
(页面上的方法)传递您要执行的javascript。
答案 1 :(得分:0)
在我看来,就像你为一些非常简单的事情做了太多的工作。我不确定你使用的是什么框架,但是你有一个应用程序范围的JavaScript文件吗?对于rails应用程序,我会写一个test.js.erb:
<%= %q+browser.execute_script('return mw.loader.getModuleNames().filter(function (module) { return mw.loader.getState(module) === "error"; }).length === 0;')+ if Rails.env.test? %>
并将//= test
添加到您的应用清单