Selenium - 我可以为几个网址禁用javascript吗?

时间:2013-07-25 15:07:07

标签: python firefox webdriver selenium-webdriver

我只需要为几个网址禁用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

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

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

1 个答案:

答案 0 :(得分:0)

将您的测试分成两大组。一组运行所有测试,禁用JS,另一组运行JS。

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

或者,你可以组织你的JS,使一切都通过一个全局符号(jQuery使用$)。

现在您需要两个框架实现。一个是正​​常的实现,另一个是mock / no-op实现,当调用它的函数时它根本不执行任何操作。

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

但有一些缺点:

  1. 并非所有框架都会与此方案一起使用
  2. 您可能需要重写大量现有代码才能使其正常工作
  3. 如果您将脚本附加到DOM节点,那么如果它们保留对内部事物的引用,则可能像以前一样继续工作。
  4. 所以我建议尝试“两组”方法: - )