Селен доступ к тексту внутри тега div - PullRequest
0 голосов
/ 11 марта 2020

Я немного новичок в Selenium, но мне удалось овладеть некоторыми основами. Проблема в том, что у меня есть тег div с некоторым текстом, и я не могу получить текст из него. Я должен добавить, что я использую Python.

Сам тег на данном сайте выглядит следующим образом:

<div class="xtb-text" id="ext-comp-1223">Displaying 1 - 25 of 184</div>

Мне нужен текст «Показано 1 - 25». из 184 ', но я не могу его получить.

Я скопировал XPath тега div, который был следующим:

//*[@id="ext-comp-1223"]

Я использовал это, чтобы получить элемент , Я попробовал метод .text и не получил текст. На самом деле, я пробовал все средства доступа, которые я видел в Интернете, просто чтобы посмотреть, дают ли некоторые из них значимую информацию. Они следующие:

print('Details for Display page info 1: ---')
    print(self.DisplayPageInfo.element.text)
    print(self.DisplayPageInfo.element.tag_name)
    print(self.DisplayPageInfo.element.parent)
    print(self.DisplayPageInfo.element.location)
    print(self.DisplayPageInfo.element.size)

    print('Details for Display page info 2: ---')
    print(self.DisplayPageInfo.element.get_attribute('text'))
    print(self.DisplayPageInfo.element.get_attribute('tag_name'))
    print(self.DisplayPageInfo.element.get_attribute('parent'))
    print(self.DisplayPageInfo.element.get_attribute('location'))
    print(self.DisplayPageInfo.element.get_attribute('size'))
    print(self.DisplayPageInfo.element.get_attribute('value'))
    print(self.DisplayPageInfo.element.get_attribute('innerText'))
    print(self.DisplayPageInfo.element.get_attribute('textContent'))

И результаты следующие:

Details for Display page info 1: ---
No data to display
div
<selenium.webdriver.chrome.webdriver.WebDriver (session="a050377decd1cdc7fb98e80f91d8b9af")>
{'x': 1274, 'y': 646}
{'height': 18, 'width': 93}
Details for Display page info 2: ---
None
None
None
None
None
None
No data to display
No data to display

Я также пробовал element.innerText и element.value, но эти свойства не существуют для веба элемент и поэтому код выдал исключение.

Я проверял XPath несколько раз, и я уверен, что это тот, который я ищу. В конце концов, текст прямо здесь, в теге. Но я просто не могу этого понять.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Убедитесь, что вы используете explicit wait довольно жесткий кодированный сон. explicit wait продолжит выполнение следующих шагов, когда и когда условие будет выполнено (в вашем случае элемент div присутствует) в отличие от режима сна, который будет ожидать в течение заданного времени даже после того, как элемент div будет присутствовать.

Ниже приведен фрагмент как использовать явное ожидание.

# make sure to add below improts
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

# Here is the line that will make sure the script waits for the element to present

DisplayPageInfo = (wait.until(EC.presence_of_element_located((By.xpath, locator))))

Попробуйте использовать класс с другими комбинациями, если элемент имеет dynamic id.

0 голосов
/ 11 марта 2020

Ответ на мой собственный вопрос:

элемент был внутри таблицы, которая была сгенерирована динамически. Поскольку загрузка таблицы заняла несколько секунд, тег div не был заполнен, когда я зашел к нему. Но когда я позже проверил элементы, чтобы увидеть, что я делал неправильно, он был заполнен.

В качестве временного способа исправить это, просто добавив режим ожидания на несколько секунд, прежде чем эти отпечатки покажут, что информация можно получить доступ.

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