2

现在我正在对 python 进行测试。我正在使用 BrowserMob 代理和 Selenium 来捕获 HTTP 请求。

robot_globals = {'proxy': None, 'selenium': None}

def robot_setup():
    server = Server(settings.BROWSERMOB_PROXY_PATH, options={'port':     settings.BROWSERMOB_PROXY_PORT})
    server.start()
    proxy = server.create_proxy()
    proxy.selenium_proxy()
    if settings.BROWSER_TO_TEST == 'FIREFOX':
        from selenium.webdriver.firefox.webdriver import WebDriver

        selenium = WebDriver(proxy=proxy, timeout=10)
    elif settings.BROWSER_TO_TEST == 'CHROME':
        from selenium.webdriver.chrome.webdriver import WebDriver
        from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

        capabilities = DesiredCapabilities.CHROME
        proxy.add_to_capabilities(capabilities)
        selenium = WebDriver(executable_path=settings.CHROME_DRIVER_PATH,
                         desired_capabilities=capabilities,
                         service_log_path=settings.DRIVER_LOG_PATH)
    selenium.maximize_window()
    return (selenium, proxy)

class BaseGATestCase(unittest.TestCase):
    def setUp(self):
        self.proxy = robot_globals['proxy']
        self.selenium = robot_globals['selenium']
....

class TestHomePage(BaseGATestCase):
    def test_01_homepage_utme_vars(self):
        self.proxy.new_har('home_page')
        self.selenium.get('%s%s' % (settings.SERVER_URL_TO_TEST, '/'))

此代码通常可以正常工作。但是每月系统会启动一次或两次浏览器,但不会在其中加载 url。浏览器只是等待,但页面根本没有加载。

但是浏览器可以在没有 self.proxy.new_har('..') 的情况下加载页面。喜欢这样的代码有效:

class TestHomePage(BaseGATestCase):
    def test_01_homepage_utme_vars(self):
        self.selenium.get('%s%s' % (settings.SERVER_URL_TO_TEST, '/'))

服务器日志:

INFO 10/09 03:09:18 n.l.b.p.j.h.HttpSer~ - Version Jetty/5.1.x
INFO 10/09 03:09:18 n.l.b.p.j.u.Contain~ - Started HttpContext[/,/]
INFO 10/09 03:09:18 n.l.b.p.j.h.SocketL~ - Started SocketListener on 0.0.0.0:9159
INFO 10/09 03:09:18 n.l.b.p.j.u.Contain~ - Started    net.lightbody.bmp.proxy.jetty.jetty.Server@6a1192e9
INFO 10/09 03:10:25 n.l.b.p.j.u.Threade~ - Stopping Acceptor ServerSocket[addr=0.0.0.0/0.0.0.0,localport=9154]

这对我来说真的很奇怪,因为上次我无法解决这个问题,但第二天它就自行解决了。我不懂为什么。现在我有同样的问题。如果有人知道我如何解决这个问题,那就太好了。谢谢!

4

0 回答 0