Есть ли какой-либо способ получить только данные json, если я использую метод getText ()

#java #json #selenium #selenium-webdriver #automation

#java #json #селен #selenium-webdriver #автоматизация

Вопрос:

В одном из сценариев мне нужно проверить содержимое json, но когда я использую метод getText() для извлечения содержимого, он выдает мне весь элемент. Мне нужно получить только содержимое json, чтобы я мог проверить. Я хочу, чтобы извлекался только объект json, и то же самое я могу сохранить в файле json для дальнейшей проверки.

например, так выглядит div:

    <div id="postMessageDiv">
        <div class="msg">
            <span class="MethodNameMsg">Post Message Function/ Method Name:</span>
            <span class="MethodName">loadModule</span>
        </div>
        <br>Data: 
        <br>
        {
      "fnToCall": "loadModule",
      "finappId": "10003592",
      "containerFinapp": true
    }
    <br>
    Page Height Sent By Framework:::: 656
    <br>
    Page Height Sent By Framework:::: 815
    <br>
    Page Height Sent By Framework:::: 996
    <div class="msg">
                                <span class="MethodNameMsg">Post Message Function/ Method Name:</span>
                                <span class="MethodName">loadModule</span>
                            </div>
                            <br>Data: 
                            <br>
                            {
      "fnToCall": "loadModule",
      "finappId": "10003593",
      "containerFinapp": true
    }
    <br>Page Height Sent By Framework:::: 684
    <br>Page Height Sent By Framework:::: 656
    <div class="msg">
    <span class="MethodNameMsg">Post Message Function/ Method Name:</span>
    <span class="MethodName">accountStatus</span>
                                            </div>
                                            <br>Data: 
                                            <br>
                                            {
      "fnToCall": "accountStatus",
      "action": "exit",
      "sites": [
        {
          "providerAccountId": 10102587,
          "bankName": "Dag Site (United States)",
          "status": "IN_PROGRESS",
          "providerId": 16441,
          "requestId": "NGj/NgqlHsZ6W2k8NcWSJY3MSkY=",
          "statusCode": "ACCT_SUMMARY_RECEIVED"
        }
      ]
    }</div>
    
 

Выходной ответ: если я использую getText(), я получаю ниже в качестве ответа:

  Post Message Function/ Method Name: loadModule
        
        Data: 
        {
          "fnToCall": "loadModule",
          "finappId": "10003592",
          "containerFinapp": true
        }
        Page Height Sent By Framework:::: 656
        Page Height Sent By Framework:::: 830
        Page Height Sent By Framework:::: 849
        Page Height Sent By Framework:::: 831
        Post Message Function/ Method Name: loadModule
        
        Data: 
        {
          "fnToCall": "loadModule",
          "finappId": "10003593",
          "containerFinapp": true
        }
        Page Height Sent By Framework:::: 684
        Post Message Function/ Method Name: accountStatus
        
        Data: 
        {
          "fnToCall": "accountStatus",
          "action": "exit",
          "sites": [
            {
              "providerAccountId": 10102575,
              "bankName": "Dag Site",
              "status": "IN_PROGRESS",
              "providerId": 16441,
              "requestId": "P7b1oRBi4geKPVhmS7cPRnqcVPU=",
              "statusCode": "ACCT_SUMMARY_RECEIVED"
            }
          ]
        }
 

Для getText будет работать только основной div, и мне нужен только объект json для проверки. Если я могу получить объект json, я могу легко проверить содержимое с помощью библиотек json

Ответ №1:

getText() возвращает внутренний текст между узлами, нет возможности извлекать только json. Поэтому вам придется проанализировать возвращенные данные на том языке программирования, который вы использовали.

Комментарии:

1. Я не хочу сохранять значение в файле и проверять. Можем ли мы использовать тег br для извлечения данных, а затем применить утверждение?

2. в Selenium нет возможности искать определенные теги во внутреннем тексте. вам нужно будет извлечь весь текст.