使用 Appium 阅读 api 个应用调用
Read api calls of app with Appium
我们正在尝试使用 Appium 进行移动测试。我找不到如何读取我们的应用程序对后端所做的 API 调用。是否可以 'listen' 应用程序的网络调用,例如读取从我们的后端返回的 JSON 正文?
谢谢
有两种可能的网络通话记录方式:
1) 通过您使用的任何代理工具(如 charles、wireshark)在您的手机中设置代理。我的意思是手动打开您拥有的任何 GUI 工具,并通过该工具路由您的流量,就像您想要收听网络流量一样。
2) 另一种方法是通过 browsermob 代理。这将生成所有已进行的网络调用的 HAR 文件(将给出响应的 headers 而不是 JSON 数据)。Maven 依赖项是:
<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);
driver设置完成后,创建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);
我们正在尝试使用 Appium 进行移动测试。我找不到如何读取我们的应用程序对后端所做的 API 调用。是否可以 'listen' 应用程序的网络调用,例如读取从我们的后端返回的 JSON 正文?
谢谢
有两种可能的网络通话记录方式:
1) 通过您使用的任何代理工具(如 charles、wireshark)在您的手机中设置代理。我的意思是手动打开您拥有的任何 GUI 工具,并通过该工具路由您的流量,就像您想要收听网络流量一样。
2) 另一种方法是通过 browsermob 代理。这将生成所有已进行的网络调用的 HAR 文件(将给出响应的 headers 而不是 JSON 数据)。Maven 依赖项是:
<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);
driver设置完成后,创建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);