#javascript #python #html #selenium
#javascript #python #HTML #selenium
Вопрос:
Я пытаюсь получить текст всплывающей подсказки, который показывает при наведении курсора мыши на то, как давно была сыграна игра https://www.leagueofgraphs.com/summoner/eune/AnFrey99
]1
В html-коде он не показывает текст, и я полагаю, что он взят из javascript, и в каждой строке есть скрипт внутри тега tr, но до сих пор я не смог получить значение переменной newTooltipData .
var newTooltipData = {"match-2733966814": (новая дата(1612964002882).toLocaleDateString() " " новая дата(1612964002882).toLocaleTimeString()) " - 31мин 48с"}; if (window.tooltipData) { window.tooltipData = Object.assign(window.tooltipData, newTooltipData); } else { window.tooltipData = newTooltipData; }
Я хочу получить точную дату для каждой строки вместе с другой информацией, которую я уже сделал. Вот мой код и мои попытки.
driver_second = webdriver.Firefox(executable_path=DRIVER_PATH)
driver_second.get("https://www.leagueofgraphs.com/summoner/eune/" 'AnFrey99')
time.sleep(5)
accept_button=driver_second.find_element_by_xpath("/html/body/div[3]/div/div/div[3]/div[1]/button[2]")
accept_button.click()
tabel=driver_second.find_element_by_xpath("//table[@class='data_table relative recentGamesTable']")
rows=tabel.find_elements_by_xpath("tbody/tr")
for row in rows:
elements=row.find_elements_by_xpath("td")
if(len(elements)>1):
script=row.find_element_by_xpath("script")
data=elements[2].find_element_by_xpath("a/div[3]")
data=script.get_property('innerHTML')
Ответ №1:
Если вы наведете указатель мыши на div, JavaScript добавит новый div на веб-сайт с идентификатором 'tooltip'
(полный источник функции здесь):
var TooltipManager = (function () {
[...]
var tooltipElement = $('#tooltip');
if (!tooltipElement.length) {
$('body').append('<div id="tooltip"></div>'); #New Div appended
[...]
Поэтому Selenium может найти этот новый div id = «tooltip» после наведения курсора мыши на div, который вызывает эту функцию.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.action_chains import ActionChains
import time
driver_second = webdriver.Firefox(executable_path=DRIVER_PATH)
driver_second.get('https://www.leagueofgraphs.com/summoner/eune/AnFrey99')
time.sleep(3)
infos = driver_second.find_elements_by_class_name('gameDate')
for i in infos:
hover = ActionChains(driver_second).move_to_element(i)
hover.perform()
time.sleep(1)
DateofGame = driver_second.find_element_by_id('tooltip').text
print(DateofGame)
вывод:
10.2.2021 14:33:22 - 31min 48s
10.2.2021 14:02:55 - 20min 47s
29.1.2021 04:12:09 - 29min 13s
29.1.2021 03:23:24 - 34min 54s
29.1.2021 02:44:22 - 32min 46s
29.1.2021 01:35:22 - 32min 48s
28.1.2021 23:23:19 - 24min 35s
10.1.2021 01:12:34 - 21min 8s
8.1.2021 22:27:35 - 21min 4s
8.1.2021 22:08:01 - 14min 51s