Цель: я хочу запустить скрипт Selenium Python через BrowserMob-Proxy, который будет захватывать и выводить захват файла HAR.
Проблема. У меня есть функциональный (очень простой) скрипт Python (показан ниже). Однако, когда он изменен для использования BrowserMob-Proxy для захвата HAR, он терпит неудачу. Ниже я привожу два разных сценария, которые оба терпят неудачу, но по разным причинам (подробности приведены после фрагментов кода).
Объяснение BrowserMob-Proxy: Как упоминалось ранее, я использую как 0.6.0, так и 2.0-beta-8. Причина этого в том, что A) LightBody (ведущий разработчик BMP) недавно указал, что его самая последняя версия (2.0-beta-9) не работает, и советует пользователям использовать вместо нее 2.0-beta-8 и B) из того, что я могу Из чтения различной информации о сайте/stackoverflow можно узнать, что 0.6.0 (полученная через PIP) используется для вызовов Client.py/Server.py, тогда как 2.0-бета-8 используется для запуска сервера. Честно говоря, меня это смущает. Однако при импорте сервера BMP требуется пакетный файл (.bat) для запуска сервера, который не предоставляется в 0.6.0, но есть в 2.0-бета-8... если кто-нибудь может пролить свет на эту область замешательство (я подозреваю, что это корень моих проблем, описанных ниже), тогда я был бы очень признателен.
Спецификации программного обеспечения:
- Операционная система: Windows 7 (64x) — работает в VirtualBox
- Браузер: FireFox (32.0.2)
- Язык сценария: Python (2.7.8)
- Автоматизированный веб-браузер: Selenium (2.43.0) — устанавливается через PIP
- BrowserMob-Proxy: 0.6.0 И 2.0-бета-8 — см. объяснение ниже
Скрипт Selenium (этот скрипт работает):
"""This script utilizes Selenium to obtain the Google homepage"""
from selenium import webdriver
driver = webdriver.Firefox() # Opens FireFox browser.
driver.get('https://google.com/') # Gets google.com and loads page in browser.
driver.quit() # Closes Firefox browser
Этот скрипт успешно запускается и не выдает никаких ошибок. Он предоставляется в иллюстративных целях, чтобы показать, что он работает, прежде чем добавлять логику BMP.
Скрипт ALPHA с BMP (не работает):
"""Using the same functional Selenium script, produce ALPHA_HAR.har output"""
from browsermobproxy import Server
server = Server('C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\browsermob-proxy')
server.start()
proxy = server.create_proxy()
from selenium import webdriver
driver = webdriver.Firefox() # Opens FireFox browser.
proxy.new_har("ALPHA_HAR") # Creates a new HAR
driver.get("https://www.google.com/") # Gets google.com and loads page in browser.
proxy.har # Returns a HAR JSON blob
server.stop()
Этот код успешно запустит скрипт и не вызовет никаких ошибок. Однако при поиске по всему жесткому диску мне так и не удалось найти ALPHA_HAR.har.
Скрипт БЕТА с BMP (не работает):
"""Using the same functional Selenium script, produce BETA_HAR.har output"""
from browsermobproxy import Server
server = Server("C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\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("BETA_HAR") # Creates a new HAR
driver.get("https://www.google.com/") # Gets google.com and loads page in browser.
proxy.har # Returns a HAR JSON blob
server.stop()
Этот код взят с сайта http://browsermob-proxy-py.readthedocs.org/en/latest/. При запуске приведенного выше кода FireFox попытается получить google.com, но никогда не сможет загрузить страницу. В конце концов, время ожидания истечет без каких-либо ошибок. И BETA_HAR.har нигде не может быть найден на моем жестком диске. Я также заметил, что при попытке использовать этот браузер для посещения любого другого сайта он также не загружается (я подозреваю, что это связано с неправильной настройкой прокси-сервера).