0

我只需要为几个 url 禁用 javascript,即:

browser.get('http://mydomain.com/page1')
# some actions with JS off
browser.get('http://mydomain.com/page2')
# some actions with JS on
browser.get('http://mydomain.com/page3')
# some actions with JS on
browser.get('http://mydomain.com/page4')
# some actions with JS off

我知道我可以在webdriver.Firefox()关闭 JS 的情况下将 firefox 配置文件传递给,但这将适用于所有页面。而且我认为webdriver.Firefox()为每个页面创建新实例并不是一个好主意。

解决这个问题的最佳方法是什么?蒂亚!

4

1 回答 1

0

将您的测试分成两大组。一组在禁用 JS 的情况下运行所有​​测试,另一组在启用 JS 的情况下运行。

这样,您只需支付两次初始设置成本(而不是每次测试一次)。

或者,您可以组织您的 JS,使所有内容都通过一个全局符号(jQuery 使用$)。

现在你需要你的框架的两个实现。一种是普通实现,另一种是模拟/无操作实现,在调用它的函数时根本不做任何事情。

然后,您可以使用browser.executeScript()将实现之一分配给全局符号。

但是,有几个缺点:

  1. 并非您的所有框架都将与此方案一起使用
  2. 您可能必须重写大量现有代码才能完成这项工作
  3. 如果您将脚本附加到 DOM 节点,那么如果它们保留对内部事物的引用,则可能会继续像以前一样工作。

所以我建议尝试“两组”的方法:-)

于 2013-07-25T15:15:33.260 回答