Как получить внутренний реагирующий текст элемента с помощью Selenium WebDriver и Java? - PullRequest
0 голосов
/ 22 октября 2019

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

<div class="MessageList">
   <li>
      <div class="Message-mine">
          <div class=Message-block">
          <div>
              <div class="Message-text">
              <!-- react-text:1200 -->
              Hey there!
              <!-- /react-text -->
          </div>
          ….
          </div>
       </div>
   </li>
   <li>
      <div class="Message-mine">
          <div class=Message-block">
          <div>
              <div class="Message-text">
              <!-- react-text:1201 -->
              Hey there again!
              <!-- /react-text -->
          </div>
          ….
          </div>
       </div>
   </li>
   ….
</div>

Я хотел бы убедиться, что последний блок 'Message-mine' содержит текст «Привет, снова!». Я использую Selenium Webdriver и Java.

Я пробовал следующее:

В моем объекте страницы (сообщения):

@FindBy(xpath="//div[@class='Message-text']")
public WebElement messageTextBox;

В моих тестовых случаях:

AssertEquals(messages.messageTextBox.getText(), "Hey there!");

(В конечном итоге я хочу получить последнее сообщение, но выше я просто хотел проверить первое.)

1 Ответ

2 голосов
/ 22 октября 2019

Правило таково, если следующее:

@FindBy(xpath="//div[@class='Message-text']")
public WebElement messageTextBox;

имеет более одного совпадения, затем возвращает первое . Это звучит как противоположность того, что вы хотите.

Вы, вероятно, хотите:

@FindBy(className="Message-text")
public List<WebElement> messageTextBoxes;

, который даст вам все из них. Чтобы получить последний, вам понадобится:

WebElement lastMessageTextBox = messageTextBoxes.get(messageTextBoxes.size() - 1);
AssertEquals(lastMessageTextBox.getText(), "Hey there!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...