首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有自动导出的情况下使用selenium从java生成Har文件?

问如何在没有自动导出的情况下使用selenium从java生成Har文件?
EN

Stack Overflow用户
提问于 2015-08-21 18:09:25
回答 2查看 4.6K关注 0票数 1

我使用netexport和selenium中的firebug实现自动化。

有两个案子。

  1. 自动导出:我已经用FF自定义配置文件在java中启用了这个选项,并且har文件在页面加载完成后会自动生成。我也能解析这个文件。

2.有些页面具有Ajax调用及其更新响应,特别是DIV。因此,由于页面没有加载,我无法捕获/保存特定ajax请求(REST服务)的har文件。我要请求/回应的细节。

可以在java中从selenium手动导出har文件吗?

如果在selenium (Java)中有任何返回har文件或json字符串的命令/函数,那么我们可以在需要的时候调用它。

每次加载页面时,自动导出选项都生成har文件。

FK3c

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-09 21:35:28

为使用AutoIt脚本从java导出手动har文件找到了解决办法。

需要启用Firefox中的firebug插件和net视图将在默认情况下显示,我们可以选择手动导出har文件。

通过使用Autoit工具,我们可以记录手动导出函数并编译脚本,给出.exe文件,我们可以从java调用exe文件。

票数 0
EN

Stack Overflow用户

发布于 2017-06-10 14:57:29

将PhantomJS与BrowserMobProxy结合使用。PhantomJS帮助我们实现启用JavaScript的页面。下面的代码也适用于HTTPS的网址。

将'phantomjs.exe'放置在C驱动器中,然后在C驱动器本身中获取'HAR-Information.har'文件。

确保您的不将‘/ '放在url的末尾,如

代码语言:javascript
复制
driver.get("https://www.google.co.in/")

它应该是

代码语言:javascript
复制
driver.get("https://www.google.co.in");

否则就没用了。

代码语言:javascript
复制
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();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32146790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档