Можно ли захватить тело ответа json веб-приложения с помощью веб-драйвера java / Selenim? - PullRequest
0 голосов
/ 04 мая 2020

Можем ли мы захватить ответы json бэкэнда веб-приложения, используя selenim webdriver или Serenity? Например. В нашем веб-приложении нам нужно получить json ответ изображения, на котором были показаны все данные. С помощью инструментов браузера deverloper мы можем увидеть ответ json. Можем ли мы запечатлеть этот ответ, используя селеновый веб-драйвер или систему спокойствия, которую мы используем? если нет, то не могли бы вы указать мне путь, по которому мы можем идти.

Я пробовал следующий код, но я мог получить только код состояния ответа. Я хочу получить ответ json на этот конкретный ответ.

public class NewJsonCheck {
    static {

        System.setProperty("webdriver.chrome.driver", "C:\\webdrivers\\chromedriver.exe");
    }

    public static void main(String[] args) {
         String url = "https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/logging/LogEntry.html";
        downloadPage(url);
    }

    private static void downloadPage(String url) {
  
        ChromeDriver driver = null;
        try {
            ChromeOptions options = new ChromeOptions();
            DesiredCapabilities cap = DesiredCapabilities.chrome();
            cap.setCapability(ChromeOptions.CAPABILITY, options);
            LoggingPreferences logPrefs = new LoggingPreferences();
            logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
            options.setCapability("goog:loggingPrefs", logPrefs);
            driver = new ChromeDriver(options);
            System.out.println("Navigate to " + url);
            driver.get(url);
            String currentURL = driver.getCurrentUrl();
            LogEntries logs = driver.manage().logs().get("performance");
            List<LogEntry> entries =(List<LogEntry>) driver.manage().logs().get(LogType.BROWSER).getAll();
            System.out.println("*************************************************************************************************************************************************************");
          for(LogEntry ent : entries) {
              System.out.println(ent.toString());
          }
            System.out.println("*************************************************************************************************************************************************************");
            int status = -1;
            System.out.println("\\nList of log entries:\\n");
            for (Iterator<LogEntry> it = logs.iterator(); it.hasNext();) {
                LogEntry entry = it.next();
                try {
                    JSONObject json = new JSONObject(entry.getMessage());
                    System.out.println(json.toString());
                    JSONObject message = json.getJSONObject("message");
                    String method = message.getString("method");
                    if (method != null && "Network.responseReceived".equals(method)) {
                        JSONObject params = message.getJSONObject("params");
                        JSONObject response = params.getJSONObject("response");
                        String messageUrl = response.getString("url");
                        if (currentURL.equals(messageUrl)) {
                            status = response.getInt("status");
                            System.out.println("Returned response for " + messageUrl
                                    + ": " + status);
                            System.out.println("Headers: " + response.get("headers"));
                        }
                    }
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            System.out.println("\nstatus code: " + status);
        } finally {
            if (driver != null) {
                driver.quit();
            }
        }
    }
}

SAMPLE Image of the POST RESPONSE

...