4

Я пытаюсь настроить браузер для работы в моем проекте selenium. Я искал способ использования ChromeOptions для установки прокси-сервера, но все источники говорят мне использовать ChromeOptions для всего остального, а затем конвертировать его в DesiredCapabilities, прежде чем создавать экземпляр нового экземпляра ChromeDriver.Настройка прокси-сервера browsermob с помощью ChromeDriver

Это мой код:

ChromeOptions options = new ChromeOptions(); 
// Setting some chrome features here 

ProxyServer proxyServer = new ProxyServer(4444); 
proxyServer.start(); 

Proxy proxy = proxyServer.seleniumProxy(); 

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 

capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
capabilities.setCapability(CapabilityType.PROXY, proxy); 

WebDriver driver = new ChromeDriver(capabilities); // Error happens here 

Я использую WebDriver версию 2.44 из репозиториев Maven. Это ошибка, я получаю:

java.lang.IllegalAccessError: tried to access field com.google.gson.JsonNull.INSTANCE from class org.openqa.selenium.remote.BeanToJsonConverter 

Кто-нибудь знает причину или любые альтернативные решения для подключения прокси-сервер для chromedriver?

+0

Попробуйте этот блог - http://carlduevel.net/get-selenium-to-run-with-proxy-authentication/ – LittlePanda

ответ

2

Если вы используете более старую версию прокси-сервера browserermob, могут возникнуть конфликты между зависимостями Selenium и BMP. Я бы рекомендовал использовать новейшее здание Selenium + latest BrowserMob Proxy от мастера.

После того, как у вас есть последние версии, вы должны быть в состоянии использовать Chrome + BMP «обычный» путь:

 BrowserMobProxy proxy = new BrowserMobProxyServer(); 
     proxy.start(); // can specify a port here if you like 

     // get the selenium proxy object 
     Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy); 

     DesiredCapabilities capabilities = new DesiredCapabilities(); 
     capabilities.setCapability(CapabilityType.PROXY, seleniumProxy); 

     // if chromedriver isn't on your system path, you'll need to set this system property 
     System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); 
     WebDriver driver = new ChromeDriver(capabilities); 

     driver.get("https://www.google.com/"); 
+0

Похожие код в C#? –

2

ChromeDriver не поддерживает прокси-колпачков непосредственно. Но поддерживает передачу командной строки args процессу chrome. И установка http-прокси - один из ключей командной строки chrome. Он может быть установлен следующим образом:

DesiredCapabilities caps = DesiredCapabilities.chrome();  
ArrayList<String> switches = new ArrayList<String>();  
switches.add("--proxy-server=localhost:8080");  
caps.setCapability("chrome.switches", switches);  
webDriver = new ChromeDriver(caps);  
+0

Я тестирую этот путь с селеном 2.52 и bmp 2.1.0-beta4, отлично. Решение, поднятое jekh, работает только для драйвера firefox! спасибо, парень! –