Получите многострочный текст из текстовой области с помощью Selenium VBA - PullRequest
0 голосов
/ 18 февраля 2020

Мне нужно получить многострочный текст из элемента textarea веб-страницы. Я вижу в Chrome инструменте разработчика, что нужный мне текст хранится в свойстве value textarea. Я отметил его на скриншоте

Ниже приведен фрагмент исходного кода страницы:

<div id="team1">
 <div id="lineupsPanel1" style="display: block;">
  <textarea id="lineupsField1" placeholder="Enter text for analyze here"></textarea>
  <button onclick="viewLineupsInTable(1,1)" title="Process text" style="cursor: pointer; font-weight: bold; color: red; padding: 3px 6px; margin: 0px 4px
  0px 0px;">Process</button>

Я пытаюсь получить следующий код, чтобы получить текст из value property

Set WebElemTextBox = Chrome.FindElementById("lineupsField1")
If Not (WebElemTextBox Is Nothing) Then
    TextVar = WebElemTextBox.value
End If

Но так TextVar получает только первую строку сохраненного текста (на примере скриншота
value: "Next items are not found:↵↵Pam-pam↵↵Next items are found:↵↵Monitor"
Но TextVar получает только "Next items are not found:" ).

Как получить полный многострочный текст?

Я также нашел несколько ответов, чтобы использовать что-то вроде
TextVar = WebElemTextBox.getAttribute("value")

Но я получаю "Run-time error: 438. Object doesn't support this property or method" на этом строка во время тестирования.

ОБНОВЛЕНИЕ. Я сам разобрался в проблеме:
Когда вы смотрите значение переменной, перемещая курсор на нее - тогда для строковой переменной отображается только первая строка текста без какой-либо отметки (три точки или что-то еще). Мы должны использовать окно просмотра, чтобы не быть обманутыми. Так что метод TextVar = WebElemTextBox.value работает хорошо.

1 Ответ

1 голос
/ 18 февраля 2020

Если возможно, было бы полезно опубликовать HTML, но я все равно постараюсь ответить на него.

Сначала проверьте идентификатор элемента для каждой строки, которую вы будете sh превращать в строку, я предполагаю, что они последовательные. Что-то вроде "lineupsField1", "lineupsField2", lineupsField3 "et c.

Если это так, вы можете через l oop и добавить эти значения в строку. Например:

For i = 1 to 10
    Set WebElemTextBox = Chrome.FindElementById("lineupsField" & i)
    If Not (WebElemTextBox Is Nothing) Then
        TextVar = TextVar & WebElemTextBox.value
    End If
Next

Если идентификаторы элементов не в последовательном порядке, то вместо их зацикливания просто добавляйте, пока не достигнете своей цели. Например:

Set WebElemTextBox = Chrome.FindElementById("lineupsField1")
    If Not (WebElemTextBox Is Nothing) Then
        TextVar = TextVar & WebElemTextBox.value
    End If

Set WebElemTextBox = Chrome.FindElementById("Element2")
    If Not (WebElemTextBox Is Nothing) Then
        TextVar = TextVar & WebElemTextBox.value
    End If

Что касается другого метода, который вы показали:

TextVar = WebElement.getAttribute("value")

Я бы не рекомендовал идти по этому пути, так как вы, вероятно, создадите больше работы для себя, анализируя все значения в HTML.

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