如何使用没有autoexport的selenium webdriver从java生成Har文件?

时间:2015-08-21 18:09:25

标签: java selenium firebug har netexport

我在硒中使用netexport api和firebug进行自动化。

有两种情况。

  1. 自动导出:我在带有FF自定义配置文件的java中启用了此选项,并且在完成页面加载后会自动生成har文件。我也能解析文件。
  2. 2.有些页面具有Ajax调用,并且特别是DIV更新响应。因此,我无法捕获/保存特定ajax请求(REST服务)的har文件,因为页面未加载。我想要请求/响应的详细信息。

    是否可以从java?

    中的selenium webdriver手动导出har文件

    如果我们在selenium webdriver(java)中有任何命令/函数会返回har文件或json字符串,我们可以在需要时调用它。
    自动导出选项为每次页面加载生成har文件。

    https://groups.google.com/forum/#!topic/http-archive-specification/73jf6K_FK3c

1 个答案:

答案 0 :(得分:1)

将PhantomJS与BrowserMobProxy一起使用。 PhantomJS帮助我们启用JavaScript页面。以下代码也适用于HTTPS Web地址。

'phantomjs.exe'放入C盘,您就可以在C盘中获得'HAR-Information.har'文件。

确保不要在网址末尾添加'/',例如

driver.get("https://www.google.co.in/")

应该是

driver.get("https://www.google.co.in");

否则,它将无效。

package makemyhar;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import net.lightbody.bmp.BrowserMobProxy;
import net.lightbody.bmp.BrowserMobProxyServer;
import net.lightbody.bmp.core.har.Har;
import net.lightbody.bmp.proxy.CaptureType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class MakeMyHAR {
    public static void main(String[] args) throws IOException, InterruptedException {

        //BrowserMobProxy
        BrowserMobProxy server = new BrowserMobProxyServer();
        server.start(0);
        server.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
        server.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
        server.newHar("Google");

        //PHANTOMJS_CLI_ARGS
        ArrayList<String> cliArgsCap = new ArrayList<>();
        cliArgsCap.add("--proxy=localhost:"+server.getPort());
        cliArgsCap.add("--ignore-ssl-errors=yes");

        //DesiredCapabilities
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
        capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);
        capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,"C:\\phantomjs.exe");

        //WebDriver
        WebDriver driver = new PhantomJSDriver(capabilities);
        driver.get("https://www.google.co.in");

        //HAR
        Har har = server.getHar();
        FileOutputStream fos = new FileOutputStream("C:\\HAR-Information.har");
        har.writeTo(fos);
        server.stop();
        driver.close();
    }
}