用Appium阅读app的api调用

时间:2016-05-25 09:53:50

标签: java api testing mobile appium

我们正在尝试使用Appium进行移动测试。我找不到如何阅读我们的应用程序对我们后端的API调用。是否可以“监听”应用程序的网络调用,例如读取从后端返回的JSON正文?

由于

1 个答案:

答案 0 :(得分:0)

录制网络电话的方法有两种:

1)通过您使用的任何代理工具(如charles,wireshark)在您的手机中设置代理。我的意思是手动打开您拥有的任何GUI工具,并通过该工具路由您的流量,就像您想要收听网络流量一样。

2)另一种方法是通过browsermob代理。这将生成所有网络调用的HAR文件(将给出响应的头部而不是JSON数据).Maven Dependency是:

    <dependency>
        <groupId>net.lightbody.bmp</groupId>
        <artifactId>browsermob-core-littleproxy</artifactId>
        <version>2.1.0-beta-3</version>
    </dependency>

在创建环境的地方添加:

// Starting server BrowserMobProxy

    server= new BrowserMobProxyServer();
    server.setConnectTimeout(10, TimeUnit.SECONDS);
    server.start(8897);
    Proxy proxy = ClientUtil.createSeleniumProxy(server);

设置功能:

 capabilities.setCapability(CapabilityType.PROXY, proxy);

设置驱动程序后,创建一个HAR文件

 server.newHar("2.har");

在@AfterSuite中添加以下内容:

 if(server.getHar()==null){
        System.out.println("No Har capture");
    }
    Har har = server.getHar();
    if(har==null){
        System.out.println("Har is NULL");
    }

    FileOutputStream fos = new FileOutputStream(FILE_OUTPUT_HAR+"fos"+".har");
    har.writeTo(fos);



    HarLog log = har.getLog();
    if(log==null){
        System.out.println("Harlog is null");
    }
    List<HarEntry> entries = new CopyOnWriteArrayList<HarEntry>(log.getEntries());
            System.out.println("entries"+entries);
            for (HarEntry entry : entries){
                System.out.println("entry="+entry.getRequest().getUrl());
            }

    File harFile = new File(HAR_FILE_PATH+"2"+".har");
    File("/Users/yourpath/"+"2"+".har");        
    har.writeTo(harFile);