Убедитесь, что трафик c от chromedriver находится в прокси - PullRequest
1 голос
/ 14 марта 2020

Я работаю над автоматизированными тестами для расширения браузера chrome. Расширение применяет файл PA c в браузере и автоматически управляет прокси-аутентификацией. Моя цель состоит в том, чтобы дать возможность легко проходить / не проходить трафику c при успешном прокси при запуске тестов.

С помощью Selenium - Chrome Журналы производительности не работают , мне удалось собрать воедино этот конфиг для регистрации событий производительности.

final ChromeOptions options = new ChromeOptions();
final DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setAcceptInsecureCerts(true);
options.addArguments("load-extension=" + unpackedBrowserExtensionPath);
options.setExperimentalOption("w3c", false);
final LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
capabilities.setCapability("goog:loggingPrefs", logPrefs);
instance = new ChromeDriver(options.merge(capabilities));

Я извлекал события во время тестов и записывал их в журнал, чтобы понять их.

final List<LogEntry> entries = instance.manage().logs().get(LogType.PERFORMANCE).getAll();
final FileWriter fw = new FileWriter("/Users/pierrelouisg/Desktop/out2.txt");
for (LogEntry entry : entries) {
  fw.write(new Date(entry.getTimestamp()) + "\t" + entry.getLevel() + "\t" + entry.getMessage() + "\n");
}
fw.close();

Когда я смотрю на сетевые журналы, они не ссылаются на прокси. Я точно знаю, что трафик c находится в прокси.

Я что-то упустил? Доступна ли информация о сети, которую я ищу, в другом месте?

ОБНОВЛЕНИЕ # 1

Я пытался использовать BrowserMobProxyServer, но похоже, что расширение останавливает функцию прокси. Записи журнала с хар пустые. Они заполнены, когда расширение браузера не включено. Так что это не похоже на правильный курс, по крайней мере, как указано ниже.

proxyServer = new BrowserMobProxyServer();
proxyServer.setTrustAllServers(true);
proxyServer.start(9091, Inet4Address.getLocalHost());
proxyServer.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
proxyServer.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
proxyServer.setUseEcc(true);

final Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
final String hostIp = Inet4Address.getLocalHost().getHostAddress();
seleniumProxy.setHttpProxy(hostIp + ":" + proxyServer.getPort());
seleniumProxy.setSslProxy(hostIp + ":" + proxyServer.getPort());

capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
...