目標: 我想通過BrowserMob-Proxy運行Selenium Python腳本,它將捕獲並輸出HAR文件捕獲。無法通過BrowserMob-Proxy使用Python Selenium Script捕獲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-beta-8用於啓動服務器。說實話,這讓我困惑。但是,當導入BMP的服務器時,它需要一個批處理(.bat)文件來啓動服務器,該服務器在0.6.0中沒有提供,但是使用2.0-beta-8 ...如果任何人都可以在這方面混亂(我懷疑這是我下面描述的問題的根源),那麼我會非常感激。
軟件規格:
- 操作系統:Windows 7中(64倍) - 在VirtualBox中運行
- 瀏覽器:Firefox(32.0.2)
- 腳本語言:Python的(2.7.8 )
- 自動化網絡瀏覽器:硒(2.43.0) - 經由PIP
- BrowserMob-代理安裝:0.6.0和2.0-β-8 - 見下文 解釋
硒腳本(這個腳本作品):
"""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。
腳本BETA與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。我也注意到,當試圖使用這個瀏覽器訪問任何其他網站時,它同樣會無法加載(我懷疑這是由於代理沒有正確配置)。
我得到下面的錯誤。 raceback(最新最後調用): 文件 「E:sample.py」,10號線,在 profile.set_proxy(self.proxy.selenium_proxy()) NameError:名字 '自我' 是沒有定義 –
2016-05-10 06:08:06