Для бывалых автоматизаторов веб-приложений известно, как важно иметь под руками прокси сервер, с помощью которого можно решить целый ряд вопросов и проблем с веб-автоматизации. 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()
Детальных шагов не расписывал. Будут вопросы, пишите!