【问题标题】:Bad substitution error when trying to use browsermob-proxy with selenium尝试将 browsermob-proxy 与 selenium 一起使用时出现错误替换错误
【发布时间】:2018-01-11 07:59:07
【问题描述】:

在 ubuntu 系统上,我尝试使用带有 python-selenium 测试的“browsernmob-proxy”。按照here 的文档,我安装了“browsermob-proxy”并尝试了以下 python 代码:

from selenium import webdriver
from browsermobproxy import Server

server = Server("/home/adietz/Projects/Venv/nosetests/lib/python2.7/site-packages/browsermobproxy/server.py")
server.start()

但这立即失败并出现以下错误:

======================================================================
ERROR: test_example2.TestSuite.test_network
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/adietz/Projects/Venv/nosetests/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/adietz/Projects/Jenkins/bsp-usecase-tests/selenium/test_example2.py", line 41, in test_network
    server.start()
  File "/home/adietz/Projects/Venv/nosetests/local/lib/python2.7/site-packages/browsermobproxy/server.py", line 113, in start
    stderr=subprocess.STDOUT)
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
OSError: [Errno 13] Permission denied

知道如何解决这个问题吗?

我也试过用

server = Server("/home/adietz/Projects/Venv/nosetests/lib/python2.7/site-packages/browsermobproxy")

相反,但失败并出现以下错误:

======================================================================
ERROR: test_example2.TestSuite.test_network
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/adietz/Projects/Venv/nosetests/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/adietz/Projects/Jenkins/bsp-usecase-tests/selenium/test_example2.py", line 40, in test_network
    server = Server("/home/adietz/Projects/Venv/nosetests/lib/python2.7/site-packages/browsermobproxy")
  File "/home/adietz/Projects/Venv/nosetests/local/lib/python2.7/site-packages/browsermobproxy/server.py", line 81, in __init__
    "in path provided: %s" % path)
ProxyServerError: Browsermob-Proxy binary couldn't be found in path provided: /home/adietz/Projects/Venv/nosetests/lib/python2.7/site-packages/browsermobproxy

附录

  • 我可能设法让browsermob-proxy 在端口 8088 或 8089 上进行 tun(不完全确定),但示例代码仍然无法运行 ....

【问题讨论】:

    标签: python selenium proxy browsermob-proxy


    【解决方案1】:

    我猜,您为代理服务器提供了错误的路径。您的代码指向 browsermob 代理 python 绑定而不是服务器。请按照以下步骤操作。

    1. https://github.com/lightbody/browsermob-proxy/releases 位置下载 browsermob 代理并将文件解压缩到特定目录。我已经解压/解压到目录C:\\Projects\\BrowserMobProxy

    2. 如果尚未安装 browsermob 代理绑定,请安装。 pip install browsermob-proxy

    3. 然后你可以在编码中指向服务器路径如下。我正在使用窗户。如下所示。

      from browsermobproxy import Server
      server = Server("C:\\Projects\\BrowserMobProxy\\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("google")
      driver.get("http://www.google.co.uk")
      proxy.har # returns a HAR JSON blob
      
      server.stop()
      driver.quit()
      

    请相应地更改代理路径(您下载或提取的位置)。

    【讨论】:

    • 我已经按照你的描述做了,但是我得到了错误:“WebDriverException: Message: 'phantomjs' executable needs to be in PATH.”
    • 我使用的路径是:“/home/adietz/Projects/Jenkins/browsermob-proxy/browsermob-proxy-2.1.4/bin/browsermob-proxy”
    • 你使用的是phantomjs浏览器吗?该错误与浏览器暴民代理无关。如果使用了 phantomjs,可能是您缺少驱动程序路径。
    • phantomjs 到底是什么?我发现的有关使用 broswermob 的文档中没有提到它...
    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多