1

我在 selenium 中使用带有 firebug 的 netexport api 来实现自动化。

有两种情况。

  1. 自动导出:我在 java 中使用 FF 自定义配置文件启用了此选项,一旦页面加载完成,har 文件就会自动生成。我也能够解析文件。

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

4

2 回答 2

1

将 PhantomJS 与 BrowserMobProxy 一起使用。PhantomJS 帮助我们处理支持 JavaScript 的页面。以下代码也适用于 HTTPS 网址。

“phantomjs.exe”放在 C 驱动器中,您将在 C 驱动器本身中获得“HAR-Information.har”文件。

确保不要在url 末尾添加“/” ,例如

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();
    }
}
于 2017-06-10T14:57:29.213 回答
0

找到了使用 AutoIt 脚本从 java 手动导出 har 文件的解决方法。
需要在 Firefox 中启用 firebug 插件,默认会显示 net panel 视图,我们可以选择手动导出 har 文件。
通过使用 Autoit 工具,我们可以记录手动导出功能并编译脚本,生成 .exe 文件,我们可以从 java 调用 exe 文件。

于 2015-09-09T21:35:28.597 回答