Моя цель - отключить куки, когда я захожу на страницу https://www.icribis.com/it/ (то есть нажимаю на кнопку "Rifuta"). Мой код, который не работает, это:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
url = 'https://www.icribis.com/it/'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 20)
driver.get(url)
time.sleep(5)
wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id = "uc-center-container"]/div[2]/div/div[1]/div/div[2]/button[2]'))).click()
time.sleep(5)
driver.close()
Я нашел XPath, проверив элемент на веб-странице.
Как я могу это исправить?
Это в теневой корневой папке.
Вам придется использовать execute_script
url = 'https://www.icribis.com/it/'
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 20)
driver.get(url)
time.sleep(5)
cookie_dsbl_btn = driver.execute_script('return document.querySelector("#usercentrics-root").shadowRoot.querySelector("#uc-center-container > div:nth-child(2) div > button:nth-child(3)")')
cookie_dsbl_btn.click()
time.sleep(5)
Я не уверен на 100%, можем ли мы иметь решение XPath, я обычно копирую путь JS из HTMLDOM, чтобы иметь дело с теневым корнем. Однако я согласен, что у нас может быть немного лучше querySelector.
@LJG: улучшен селектор запросов выше. Также прочитайте stackoverflow.com/questions/1063306/…, почему querySelector предпочтительнее, чем XPath.
Спасибо за ваш ответ. Нельзя ли в этом случае иметь решение с XPath?