【问题标题】:Har file always returns empty when run via browsermob proxy in selenium在 selenium 中通过 browsermob 代理运行时,har 文件总是返回空
【发布时间】:2019-12-10 23:52:18
【问题描述】:

我正在尝试通过 browsermob 代理读取在 selenium 重播期间遍历的页面源,但我总是得到一个空的 har 文件。

硒 3.141 browsermob-core 2.1.5 jar

下面是我的代码。

如果我设置

WebDriver driver = new ChromeDriver(options);页面被加载

WebDriver driver = new ChromeDriver(capabilities);页面加载失败,返回页面未加载

代理正在根据日志正确启动

/************************************/

[RemoteTestNG] 检测到 TestNG 版本 6.14.3

SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

SLF4J:默认为无操作 (NOP) 记录器实现

SLF4J:请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder 了解更多详情。

net.lightbody.bmp.BrowserMobProxyServer@61322f9dBrowserMobProxy 59858是端口号

代理(手动,http=10.88.16.64:59858,ssl=10.88.16.64:59858)seleniumProxy

/************************************/

任何建议都会有所帮助。

public void test() throws Exception 
    {

        BrowserMobProxy proxy = getProxyServer(); //getting browsermob proxy
        System.out.println(proxy+"BrowserMobProxy");
        Proxy seleniumProxy = getSeleniumProxy(proxy);
        System.out.println(seleniumProxy+"seleniumProxy");
        DesiredCapabilities capabilities = new DesiredCapabilities().chrome();


        capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
        capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        System.setProperty("webdriver.chrome.driver", "C:\\APMWS\\testmvnproject\\src\\drivers\\chromedriver76.exe");
         ChromeOptions options = new ChromeOptions();
         WebDriver driver = new ChromeDriver(options);

        proxy.newHar(); // creating new HAR
        driver.get("https://google.com");
        driver.navigate().to("https://pizzahut.com"); //example

        List<HarEntry> entries = proxy.getHar().getLog().getEntries();
        for (HarEntry entry : entries) 
        {
            HarRequest request = entry.getRequest();
            HarResponse response = entry.getResponse();
            System.out.println(request.getUrl()+" : "+response.getStatus()+","+entry.getTime()+"ms");
        }
    proxy.stop();
    driver.close();
    }

    public Proxy getSeleniumProxy(BrowserMobProxy proxyServer) 
    {
        Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
        System.out.println(seleniumProxy.getHttpProxy());
    try
    {
        String hostIp = Inet4Address.getLocalHost().getHostAddress();
        System.out.println(hostIp);
        seleniumProxy.setHttpProxy(hostIp + ":" + proxyServer.getPort());
        seleniumProxy.setSslProxy(hostIp + ":" + proxyServer.getPort());
        System.out.println(proxyServer.getPort()+"is port number");
    } 
    catch (UnknownHostException e) 
    {
        e.printStackTrace();
        System.out.println("invalid host");
    }
    return seleniumProxy;
}

public BrowserMobProxy getProxyServer() 
{
    BrowserMobProxy proxy = new BrowserMobProxyServer();
    proxy.setTrustAllServers(true);
    proxy.start(0);
    return proxy;
}

预期结果:写入跟踪通过代理运行到 HAR 文件

实际结果:设置代理,启动页面但 HAR 文件为空。

【问题讨论】:

    标签: java selenium selenium-webdriver browsermob-proxy browsermob


    【解决方案1】:

    您可以摆脱以下情况: SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。

    如果您正在运行 Maven,只需将其放入您的 POM 文件中。

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.25</version>
      <scope>test</scope>
    </dependency>
    

    这就是我在 Chrome 中启动 Har 文件的方式。

      // start the proxy
            proxy = new BrowserMobProxyServer();
            proxy.start(0);
            // get the Selenium proxy object
            org.openqa.selenium.Proxy seleniumProxy = 
            ClientUtil.createSeleniumProxy(proxy);
            ChromeOptions options = new ChromeOptions();
            options.setCapability(CapabilityType.PROXY, seleniumProxy);
            options.setExperimentalOption("useAutomationExtension", false);
            options.addArguments("--start-maximized");
            driver = new ChromeDriver(options);
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 2023-03-29
      相关资源
      最近更新 更多