2016-05-25 2 views
1

мы экспериментируем с Appium для нашего мобильного тестирования. Я не мог найти, как читать вызовы API, которые наше приложение делает для нашего бэкэнд. Возможно ли «прослушивать» сетевые вызовы приложения и, например, читать тело JSON, которое возвращается из нашего бэкэнда?Прочтите api-приложения приложения с Appium

Благодаря

ответ

0

Там два возможных способа записи сетевых вызовов:

1) Настройка прокси-сервера на мобильном устройстве с помощью любого инструмента прокси вы используете как Чарльзом, Wireshark. Я имею в виду, что вручную открываем любой инструмент GUI, который у вас есть, и трафик вашего трафика с помощью инструмента, как при прослушивании сетевого трафика.

2) Еще один способ - прокси-сервер browsermob. Это привело бы к HAR файл всех сетевых вызовов, которые были сделаны (дал бы заголовки ответа, а не данные в формате 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); 

возможности Set:

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

Спасибо Tabish. Это также работает с сервером Appium? Я заметил, что appium не поддерживается BrowserMobProxy. Вот ссылка https://github.com/appium/appium/issues/4968. Есть ли у вас какие-либо предложения? –

+0

Я попробовал apporach, как вы упомянули, файл har генерируется без какой-либо информации больше, чем основы. Вот информация. { \t "бревном": { \t \t "версия": "1.2", \t \t "создатель": { \t \t \t "имя": "BrowserMob Proxy", \t \t \t "версию": «2.1 0,0-бета-3-littleproxy», \t \t \t "комментарий": "" \t \t}, \t \t "страницы": [{ \t \t \t "идентификатор": "Second.har", \t \t \t "startedDateTime": "2016-05-26T21: 42: 46,453 + 02: 00", \t \t \t "Название": «Во-вторых.хар " \t \t \t "pageTimings": { \t \t \t \t "комментарий": "" \t \t \t}, \t \t \t "комментарий": "" \t \t}], \t \t" записи ": [], \t \t" комментарий ":" " \t} } –

+0

Вы настроили свой телефон t o маршрутизировать свой трафик через порт прокси (8897 в примере)? –

Смежные вопросы