Selenium和browermob代理的详细计时给出了空的har文件



也许有人可以帮助我,我已经搜索了几个小时了,找不到解决方案,在任何网站/博客/常见问题/…

我试图得到一个页面的详细时间,与硒和Browsermob代理。但是生成的HAR文件总是空的pageTitle, pageTimings和条目,如:

{"日志":{"版本":"1.2","创造者":{"名称":"BrowserMob代理"、"版本":"2.0"},"页面":[{" id ": " assertselenium.com "、"startedDateTime":"2014 - 08 - 26 - t15:45:49.134 + 0000","标题":","pageTimings":{}}],"条目":[]}}

当我看到教程时,它看起来很容易!但对我来说不是。我是公司代理,也许这就是导致问题的原因…

我的代码是(修改了一百次…):

import java.io.File;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import net.lightbody.bmp.proxy.ProxyServer;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Example {
    public static void main(String[] args) throws Exception {
        ProxyServer server = new ProxyServer(4444);
        HashMap<String, String> options = new HashMap<String, String>();
        server.start();
        server.setOptions(options);
        server.setCaptureHeaders(true);
        server.setCaptureContent(true);
        Proxy proxy = new Proxy();
        // configure it as a desired capability
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.PROXY, proxy);
        FirefoxProfile profile = new FirefoxProfile();
        profile.setAcceptUntrustedCertificates(true);
        profile.setAssumeUntrustedCertificateIssuer(true);
        profile.setPreference("network.proxy.http", "[MY_PROXY_HERE]");
        profile.setPreference("network.proxy.http_port", 8080);
        profile.setPreference("network.proxy.ssl", "[MY_PROXY_HERE]");
        profile.setPreference("network.proxy.ssl_port", 8080);
        profile.setPreference("network.proxy.type", 1);
        profile.setPreference("network.proxy.no_proxies_on", "");
        capabilities.setCapability(FirefoxDriver.PROFILE, profile);
        // start the browser up
        WebDriver driver = new FirefoxDriver(capabilities);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        // create a new HAR with the label "apple.com"
        server.newHar("assertselenium.com");
        // open yahoo.com
        driver.get("http://assertselenium.com");
        // driver.get("http://assertselenium.com/2012/10/30/transformation-from-manual-tester-to-a-selenium-webdriver-automation-specialist/");
        driver.findElement(By.id("searchform"))
                .findElement(By.className("field"))
                .sendKeys(new String[] { "test selenium!" });
        driver.findElement(By.id("searchform"))
                .findElement(By.className("submit")).click();
        // new PerformanceTiming((JavascriptExecutor) driver, server.getHar());
        ((JavascriptExecutor) driver)
                .executeScript("var performance = window.performance || {};"
                        + "var timings = performance.timing || {};"
                        + "return timings;");
        server.getHar().writeTo(
                new File("C:/prj/SeleniumTest/harfiles/har.txt"));
        server.stop();
        driver.quit();
    }
}

(当然[MY_PROXY_HERE]只是不给真名:))

仍然没有50个代表所以回答而不是评论....

只是想知道你想从性能计时中得到什么?因为你可以从导航计时API直接从浏览器实例检索数据?这将为您提供页面加载性能时间的详细细分。如果您的开发团队愿意插入标记,您还可以使用它来捕获嵌入式AJAX调用等的计时。(这就是我正在做的)

获取数据只是一个简单的JavaScript注入。在我的情况下(Python - 'driver'是我的webdriver实例)-驱动程序。execute_script("返回window.performance.timing")。它返回一个字典对象,其中包含完整的页面加载时间分解。

只是问一下,因为这似乎比搞乱代理简单得多…

相关内容

  • 没有找到相关文章

最新更新