Selenium Webdrivers: Chargez la page sans ressources

J'essaie d'empêcher Javascript de modifier le code source du site que je teste avec Selenium. Le problème est que je ne peux pas simplement désactiver Javascript dans le Webdriver, car je l'ai besoin pour un test. Voici ce que je fais pour 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); 

Je ne permet pas à Firefox de charger des images, des scripts et des feuilles de styles. Comment puis-je faire cela avec Internet Explorer Webdriver et Chrome Webdriver? Je n'ai trouvé aucune préférence similaire. Ou est-ce qu'il existe même un moyen plus élégant d'empêcher les webdrivers de charger les fichiers JS du site après tout? Je vous remercie!

La solution consiste à utiliser le proxy. Webdriver s'intègre très bien avec proxy 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; } 

Probablement, la façon la plus simple d'accomplir ce que vous voulez de manière croisée est d'utiliser un proxy. Cela vous permettra d'intercepter les demandes de ressources et de les bloquer. Cela aurait également l'avantage d'utiliser le même code pour tous les navigateurs, plutôt que d'avoir à chaque casier chaque navigateur avec des paramètres uniques à ce navigateur.