Selenium Webdrivers:无任何资源加载页面

我试图阻止Javascript更改我正在使用Selenium测试的网站源代码。 问题是,我不能简单地在Webdriver中关闭Javascript,因为我需要它来进行测试。 这是我正在为Firefox Webdriver做的事情:

firefoxProfile.setPreference("permissions.default.image", 2); firefoxProfile.setPreference("permissions.default.script", 2); firefoxProfile.setPreference("permissions.default.stylesheet", 2); firefoxProfile.setPreference("permissions.default.subdocument", 2); 

我不允许Firefox加载任何图像,脚本和样式表。 如何使用Internet Explorer Webdriver和Chrome Webdriver执行此操作? 我没有找到任何类似的偏好。 或者是否有一种更优雅的方式来阻止webdrivers加载网站的JS文件呢? 谢谢!

解决方案是使用代理。 Webdriver与browsermob代理集成得非常好: http ://bmp.lightbody.net/

 private WebDriver initializeDriver() throws Exception { // Start the server and get the selenium proxy object ProxyServer server = new ProxyServer(proxy_port); // package net.lightbody.bmp.proxy server.start(); server.setCaptureHeaders(true); // Blacklist google analytics server.blacklistRequests("https?://.*\\.google-analytics\\.com/.*", 410); // Or whitelist what you need server.whitelistRequests("https?://*.*.yoursite.com/.*. https://*.*.someOtherYourSite.*".split(","), 200); Proxy proxy = server.seleniumProxy(); // Proxy is package org.openqa.selenium.Proxy // configure it as a desired capability DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.PROXY, proxy); // start the driver ; Webdriver driver = new FirefoxDriver(capabilities); //WebDriver driver = new InternetExplorerDriver(); return driver; } 

可能以跨浏览器方式完成您想要的最简单方法是使用代理。 这将允许您拦截对资源的请求,并阻止它们。 这也有利于为所有浏览器使用相同的代码,而不是必须使用该浏览器独有的设置来特殊设置每个浏览器。