Исключение из GDPR Selenium NoSuchElementException

#python #selenium #nosuchelementexception

#python #selenium #исключение из правил nosuchelementexception

Вопрос:

Я хочу очистить некоторые данные из «https://www.techadvisor.co.uk/review/wearable-tech /». Я выяснил, что перебор страниц с помощью Beautifulsoup не работает. Это причина, по которой я пытался открыть его с помощью selenium. Не удается найти кнопку «Принять все» для преодоления блокировки GDPR.

Я пытался:

 browser = webdriver.Chrome()
browser.get("https://www.techadvisor.co.uk/review/wearable-tech/")
# button = browser.find_element_by_xpath('/html/body/div/div[3]/div[5]/button[2]')
# WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "html/body/div/div[3]/div[5]/button[2]"))).click()
  

Я всегда получаю исключение NoSuchElementException

Честно говоря, я нашел Xpath действительно странным, но я получил это из проверки Google Chrome.

Мы ценим каждое предложение или совет по решению 🙂

Ответ №1:

Нажать на Accept All кнопку, которая находится внутри iframe .Сначала вам нужно переключиться на iframe , чтобы нажать кнопку.

Вызовите WebDriverWait () и дождитесь frame_to_be_available_and_switch_to_it () и используйте следующий css-селектор.

Вызовите WebDriverWait () и дождитесь element_to_be_clickable () и используйте следующий селектор xpath.

 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

browser = webdriver.Chrome()
browser.get("https://www.techadvisor.co.uk/review/wearable-tech/")
WebDriverWait(browser,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[id^='sp_message_iframe']")))
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Accept All']"))).click()
  

Ответ №2:

Я знаю, что вопрос старый, но я хотел бы предоставить свое собственное решение! Первый шаг — распознать «идентификатор» формы, которую вы фактически просматриваете, а затем вам нужно переместить фокус на нее!

 driver.switch_to_frame(driver.find_element_by_xpath('//*[@id="gdpr-consent-notice"]'))

    cookies = driver.find_element_by_xpath('/html/body/app-root/app-theme/div/div/app-notice/app-theme/div/div/app-home/div/div[3]/div[2]/a[3]/span')

    cookies.click()