получение текста всплывающей подсказки с помощью Selenium Python

#python #selenium-webdriver #web-scraping #tooltip

#python #selenium-webdriver #очистка веб-страниц #всплывающая подсказка

Вопрос:

Я пытаюсь очистить некоторый динамический контент, появляющийся при наведении курсора мыши. Я пробовал цепочки действий из Selenium для перемещения мыши и наведения курсора мыши, но не смог получить требуемый текст. Проблема в том, что я не могу получить конкретную позицию всплывающей подсказки в DOM. Я пытался получить его, используя опцию приостановки отладчика, но элемент не виден в DOM. вот ссылка на веб-страницу. https://www.capterra.com/p/174185/Weave-Accreditation/reviews /. Я также прилагаю скриншот, на котором красным прямоугольником выделен контент, который я хочу очистить.введите описание изображения здесь

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

1. Ваши испытания кода?

Ответ №1:

В режиме приостановки работы отладчика мы можем выполнить поиск соответствующего div для этой всплывающей подсказки. Хитрость: перейдя в приостановленный режим отладчика, найдите строку всплывающей подсказки в HTML DOM. Смотрите ниже:введите описание изображения здесь

Основываясь на приведенном выше DOM, я использовал приведенный ниже код для печати текста всплывающей подсказки.

 from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome('..driverschromedriver')
driver.get("https://www.capterra.com/p/174185/Weave-Accreditation/reviews/")
driver.maximize_window()
toolTip = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[starts-with(text(),'Reviewer Source')]/div[contains(@class,'IconWrapper')][1]")))
hov = ActionChains(driver).move_to_element(toolTip)
txt = hov.perform()
tooltipText = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='tippy-content']"))).text
print(tooltipText)
  

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

1. Хорошо, я понял вашу точку зрения. У меня это работает идеально. Спасибо.

2. еще одна вещь, я пытаюсь выполнить итерацию по веб-странице и получить точно такой же текст из всех разделов. не могли бы вы, пожалуйста, обновить скрипт для этого. Спасибо

3. я попытался обновить приведенный выше скрипт следующим образом. Всплывающая подсказка = WebDriverWait(драйвер, 10).до(EC.presence_of_element_located((By.XPATH, «//div[начинается с(text(),’Источник рецензента’)][2]/div[содержит (@class,’IconWrapper’)][1]»))), но он продолжает нажимать исключение тайм-аута

4. @AffifaTaskeen Причина, по которой вы получаете тайм-аут, заключается в том, что используемый вами XPath не идентифицирует какой-либо элемент. Всегда рекомендуется проверять ваш xpath, скопировав его в Element Inspect (F12)> Вкладка элемента> Поиск (Ctrf F) > Ваш XPath. Если оно правильное, оно покажет, сколько элементов идентифицировано им.

5. Возвращаясь к вашему вопросу, не могли бы вы уточнить, какой текст all divs вы хотите напечатать? Как и на вашей странице, на вашей странице всего 1384 раздела :). В любом случае попробуйте что-нибудь с методом findelements и выполните итерацию по всем разделам. Еще одна просьба, пожалуйста, запустите отдельную ветку вопросов, если ваша первоначальная проблема решена. Приветствия!!!