Пример использования ChromeDriver + Python + Browsermob proxy

Для бывалых автоматизаторов веб-приложений известно, как важно иметь под руками прокси сервер, с помощью которого можно решить целый ряд вопросов и проблем с веб-автоматизации. NTLM авторизация, блокирование сторонних сайтов не относящихся к тестированию вашего веб-приложения и т.д. В разных случаях работу с прокси решают по разному, какое-то время назад был придуман хороший проект под названием Browsermob-proxy, который очень помогает при автоматизации.

David Burns написал клиент на python для использования прокси с помощью python и даже приложил пример его использования для FirefoxDriver.

from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()
 
from selenium import webdriver
profile  = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
 
proxy.new_har("google")
driver.get("http://www.google.co.uk")
proxy.har # returns a HAR JSON blob
 
server.stop()
driver.quit()

Но вот для ChromeDriver примера нет, даже если хорошо погуглить. И люди, которые хотят использовать ChromeDriver, не знают, как заставить цепочку ChromeDriver + Python + Browsermob proxy работать. Потому, что не знают, как правильно подключать прокси к ChromeDriver.

Заполняю этот пробел c соответствующим примером кода:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException,
ElementNotVisibleException
from browsermobproxy import Server
import urlparse
 
server = Server(r"c:\browsermob\bin\browsermob-proxy.bat")
server.start()
proxy = server.create_proxy()
proxy.new_har()
 
chrome_options = webdriver.ChromeOptions()
proxy = urlparse.urlparse(proxy.proxy).netloc
chrome_options.add_argument('--proxy-server=%s' % proxy)
driver = webdriver.Chrome(
    executable_path=r"c:\chromedriver.exe",
    chrome_options=chrome_options)
driver.get("http://google.com.ua/")
driver.find_element_by_id("gbqfsb").click()
 
print proxy.har
 
driver.quit()
server.stop()

Детальных шагов не расписывал. Будут вопросы, пишите!

3 лайка

Привет, а как настроить этот прокси на сайты с HTTPS? У меня браузер отказывается заходить с этим прокси на локалхосте на сайты с HTTPS.