目标: 我想通过BrowserMob代理运行一个Selenium Python脚本,它将捕获并输出一个HAR文件捕获。
问题: 我有一个功能(非常基本)的Python脚本(如下所示)。但是,当更改为使用BrowserMob代理来捕获HAR时,它失败了。下面我提供了两个不同的脚本,它们都失败了,但原因不同(在代码片段后面提供了详细信息)。
BrowserMob代理说明: 如前所述,我同时使用0.6.0和2.0-beta-8。原因是A)LightBody(BMP的首席设计师)最近表示,他最新的版本(2.0-beta-9)不起作用,建议用户改用2.0-beta-8;B)从我阅读各种站点/堆栈溢出信息中可以看出,0.6.0(通过PIP获得)用于调用Client.py/Server.py,而2.0-beta-8用于启动服务器。老实说,这让我很困惑。然而,当导入BMP的服务器时,它需要一个批处理(.bat)文件来启动服务器,这不是0.6.0中提供的,而是2.0-beta-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逻辑之前提供它以指示其工作。
使用BMP编写ALPHA脚本(不起作用):
"""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编写BETA脚本(不起作用):
"""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。我还注意到,当尝试使用此浏览器访问任何其他站点时,它也将同样无法加载(我怀疑这是由于未正确配置代理)。
试试这个:
我使用phantomJS,下面是一个如何与python一起使用的示例:
当你这样做时:
您需要解析该响应,proxy.har是一个JSON对象,因此如果需要生成文件,您需要执行以下操作:
然后你会找到你的
相关问题 更多 >
编程相关推荐