Невозможно загрузить ресурс из-за сертификатов SSL с использованием Selenium Webdriver с прокси-сервером BrowserMob для захвата файла har

Я использую Selenium Webdriver (Chromedriver) в Java вместе с прокси-сервером BrowserMob для захвата HTTP-трафика в файле har. Недавно я столкнулся с проблемой, когда разделы веб-сайта не загружались, и я сузил ее до этой ошибки: «Не удалось загрузить ресурс ".

Похоже, что при использовании прокси-сервера драйвер Selenium не может получить доступ к сертификату SSL для ссылки https. Вот фрагмент кода, который я использую:

ProxyServer server = new ProxyServer(4040);
server.start();
Proxy proxy = server.seleniumProxy();
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
driver = new ChromeDriver(capabilities);
server.newHar("myHar");
Har har = server.getHar();
server.stop();

Я попытался добавить "capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);", и это решило указанную выше проблему, но только если я удалю "capabilities.setCapability(CapabilityType.PROXY, proxy);", и тогда я больше не смогу захватить har-файл.

Я попытался переключиться на драйвер firefox и настроить профиль firefox, но либо я делаю это неправильно, либо это не сработает для моих целей.

Я также попытался настроить сертификат cybervillainsCA, который поставляется с прокси-сервером BrowserMob в доверенных корневых центрах сертификации, но это тоже не решило проблему.

Кто-нибудь знает, как решить эту проблему, чтобы я мог собирать HTTP-трафик, а также успешно загружать упомянутый выше ресурс?


person Sara G    schedule 11.06.2013    source источник
comment
у меня может быть повторяющийся вопрос к этому < / а>   -  person Andriy Samilyak    schedule 08.11.2013


Ответы (1)


В итоге я полностью отказался от прокси и вместо этого переключился на использование профиля Firefox с расширениями Firebug и NetExport, чтобы экспортировать файл har. Это привело к значительному замедлению тестов и экспорту har для каждой посещенной страницы, а не для всего сеанса.

Код:
//Firefox profile FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.addExtension(new File("firebug-1.11.4-fx.xpi"));
ffProfile.addExtension(new File("netExport-0.9b3.xpi"));

//Set default Firefox preferences ffProfile.setPreference("app.update.enabled", false); String domain = "extensions.firebug.";

//Set default Firebug preferences ffProfile.setPreference(domain + "currentVersion", "1.11.4"); ffProfile.setPreference(domain + "allPagesActivation", "on");
ffProfile.setPreference(domain + "defaultPanelName", "net"); ffProfile.setPreference(domain + "net.enableSites", true);

//Set default NetExport preferences ffProfile.setPreference(domain + "netexport.alwaysEnableAutoExport", true);
ffProfile.setPreference(domain + "netexport.autoExportToFile", true);
ffProfile.setPreference(domain + "netexport.showPreview", false);
ffProfile.setPreference(domain + "netexport.defaultLogDir", "string file path");

//WebDriver, instantiated outside the method
driver = new FirefoxDriver(ffProfile);
s = new WebDriverBackedSelenium(driver, "http://www.google.ca/");

Я собирал har файл после каждой страницы следующим образом:

HarFileReader r = new HarFileReader();
HarFileWriter w = new HarFileWriter();
int count = 1;
String allHars = "";
String harFolderPath = "file path for har";
File dir = new File(harFolderPath);
for (File child : dir.listFiles()) {
HarLog log = r.readHarFile(child);
File f = new File(harFolderPath + "\\test"+count+".txt");
w.writeHarFile(log, f);
allHars = allHars + readFileAsString(f.getPath());
count++;
}
FileUtils.cleanDirectory(dir);

person Sara G    schedule 14.06.2013