2016-07-01 3 views
0

Ich versuche derzeit, BrowserMob Proxy (v2.1.1) + Selenium (v2.5.3) für Python (v2.6) zu verwenden, um Seitenladezeiten zu testen und sie in HAR-Dateien auszugeben. Ich muss sowohl Chrome als auch IE testen. Ich habe derzeit funktioniert es perfekt für Chrome und es läuft ohne Fehler auf IE, aber es erfasst nicht die richtigen Daten in die HAR-Datei.Python BrowserMob Proxy mit IE erfasst falsche HAR?

Dieses Bild ist ein Vergleich der zwei verschiedenen HAR-Dateien, die ich bekomme. Der erste ist das Ergebnis von IE und der zweite ist das Ergebnis von Chrome. Ich muss für beide dasselbe bekommen. Ich habe das Gefühl, dass ich etwas falsch mache mit der Art und Weise, wie ich den Proxy einrichte, aber laut http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp sollte es im Grunde für Chrome/IE genauso sein wie ich es habe. Meine Gedanken sind, dass es nicht mit dem richtigen Proxy-Port oder so etwas, aber ich weiß nicht, wie es zu beheben

enter image description here

Wie Sie sehen können, wie es scheint auch zu erfassen, was Selen auf das tun Seite, die nicht das ist, was ich will. Dies ist der Code ich verwende:

class SeleniumObject: 

    def __init__(self): 
     # Start up the server 
     self.server = Server(Config.BAT_PATH) #resolves to the location of browsermob-proxy-2.1.1/bin/browsermob-proxy.bat 
     self.server.start() 
     self.proxy = self.server.create_proxy() 

    def setupDriver(self, browser): 
     self.browser = browser.lower() 
     PROXY = self.proxy.proxy 

     # Chrome 
     if self.browser == 'chrome': 
      options = webdriver.ChromeOptions() 
      options.add_argument("--start-maximized") 
      desired_capabilities = webdriver.DesiredCapabilities.CHROME.copy() 
      # Change the proxy properties of that copy. 
      desired_capabilities['proxy'] = { 
       "httpProxy":PROXY, 
       "ftpProxy":PROXY, 
       "sslProxy":PROXY, 
       "noProxy":None, 
       "proxyType":"MANUAL", 
       "class":"org.openqa.selenium.Proxy", 
       "autodetect":False 
      } 
      self.driver = webdriver.Chrome(chrome_options=options, desired_capabilities=desired_capabilities) 

     # IE 
     if self.browser == 'ie': 
      desired_capabilities = webdriver.DesiredCapabilities.HTMLUNITWITHJS.copy() 
      desired_capabilities['proxy'] = { 
       "httpProxy":PROXY, 
       "ftpProxy":PROXY, 
       "sslProxy":PROXY, 
       "noProxy":None, 
       "proxyType":"MANUAL", 
       "class":"org.openqa.selenium.Proxy", 
       "autodetect":False 
      } 
      self.driver = webdriver.Ie(capabilities=desired_capabilities) 

    def outputHAR(self): 
      # Output the data as a HAR file 
      self.har_json = json.dumps(self.proxy.har, indent=4, sort_keys=True) # returns a HAR JSON blob 
      open(self.browser + '-load-summary-' + self.sample_time + '.har', 'w').write(self.har_json) 

    def setSampleTime(self): 
     self.sample_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") 

    def shutDown(self): 
     self.setRegKey("ProxyEnable", 0) # Forces the internet setting to stop using the proxy in case there was an error 
     self.driver.quit() 
     self.proxy.close() 
     self.server.stop() 

selenium = SeleniumObject() 
selenium.setupDriver("chrome") 
selenium.setSampleTime() 
selenium.proxy.new_har("W3Schools") 
selenium.driver.get("http://www.w3schools.com") 
selenium.outputHAR() 
selenium.shutDown() 
print "Done!" 

Antwort

1

Sie müssen sicherstellen, dass der Cache des IE sauber ist, bevor Sie den Browser starten:

desired_capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER 
desired_capabilities ["ie.ensureCleanSession"] = True 
driver = webdriver.Ie(capabilities=desired_capabilities) 

Beachten Sie, dass die Metriken auf dem Proxy lesen. Sie messen also nur die Antwortzeiten jeder Anfrage und nicht die Seitenladezeiten.

+0

Dies löste es. Vielen Dank; Es fing an, mir Kopfschmerzen zu bereiten. Aus Neugier, löscht der Chrome-Treiber den Cache automatisch und deshalb war das kein Problem mit Chrome? –

+0

Der Chrome-Treiber erstellt bei jedem Start ein temporäres Profil und startet daher immer mit einer sauberen Sitzung. –

+0

Ahh, das macht jetzt viel mehr Sinn. Danke für die Hilfe! –

Verwandte Themen