1

一位开发人员最近询问我们的测试是否可以在每次打开页面时执行一些 javascript。有关详细信息,请参阅错误 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)看起来是一种简单的方法。

有没有更好的办法?

4

2 回答 2

2

您可以简单地在您的页面对象类上创建一个名为initialize_page. 此方法将在页面加载后立即调用。在该方法中,您可以调用execute_script(页面上的方法)传递您希望执行的 javascript。

于 2013-02-01T13:00:28.460 回答
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到您的应用程序清单

于 2013-01-31T23:12:34.523 回答