簡體   English   中英

用Appium閱讀app的api調用

[英]Read api calls of app with Appium

我們正在嘗試使用Appium進行移動測試。 我找不到如何閱讀我們的應用程序對我們后端的API調用。 是否可以“監聽”應用程序的網絡調用,例如讀取從后端返回的JSON正文?

謝謝

錄制網絡呼叫有兩種可能的方法:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM