2013-10-29 52 views
0

我試圖阻止Javascript改變我用Selenium測試的網站源代碼。問題是,我不能簡單地在Webdriver中關閉Javascript,因爲我需要它進行測試。以下是我爲Firefox Webdriver所做的工作:Selenium Webdrivers:無任何資源加載頁面

 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文件? 謝謝!

回答

4

解決方案是使用代理。 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; 
} 
1

也許最簡單的方法是使用代理,以跨瀏覽器的方式完成所需的工作。這將允許您攔截資源請求並阻止它們。這也可以爲所有瀏覽器使用相同的代碼,而不必爲每個瀏覽器設置特定於該瀏覽器的設置。