Я пытаюсь нажать кнопку с селеном, потому что после этого мне нужно проверить полный HTML-код веб-сайта. Это код, который я использую:

driver = webdriver.Chrome()
driver.get('https://www.quattroruote.it/listino/audi/a4-allroad')
time.sleep(10)
html = driver.find_element_by_id('btnallestimenti')
html.click()

Но я получаю эту ошибку: selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

Когда страница открыта, появляются файлы cookie и другие вещи, есть ли способ заблокировать их все, чтобы я мог работать с html?

Большое спасибо!

0
Luigi Modica 15 Окт 2021 в 18:30

2 ответа

Лучший ответ

Как вы можете видеть, баннер «cookie» сам по себе является элементом HTML и содержит кнопку «Закрыть» («Чиуди»), которую можно нажать.

Если вы проверите исходный код страницы, вы найдете этот код, относящийся к этой кнопке:

<button type="button" class="iubenda-cs-close-btn" tabindex="0" role="button" aria-pressed="false" style="font-size:16px!important;">Chiudi</button>

Ваш скрипт необходимо изменить, чтобы выполнить поиск элемента по видимому тексту (с использованием XPath) и щелкнуть его, чтобы закрыть баннер:

close_button = driver.find_element_by_xpath("//*[text()='Chiudi']")

close_button.click()

Я вижу, что этот вид баннера появляется 2 раза (один для файлов cookie, один для «Informativa»), но как только вы щелкаете по нему, вы перенаправляетесь на нужную страницу.

Конечно, вам нужно будет протестировать свой скрипт и настроить его в соответствии с поведением страницы.

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

РЕДАКТИРОВАТЬ

Разместив здесь полный код, попробуйте использовать его и продолжайте отсюда:

import time
from selenium.webdriver import Chrome

driver = Chrome()

driver.get("https://www.quattroruote.it/listino/audi/a4-allroad")
time.sleep(6)

driver.find_element_by_xpath("//button[text()='Accetta']").click()
time.sleep(6)

driver.switch_to.frame("promo-premium-iframe")
driver.find_element_by_xpath("//a[normalize-space()='Non sono interessato']").click()
time.sleep(6)

driver.switch_to.default_content()

driver.find_element_by_id("btnallestimenti").click()

input()
0
tidus4400 15 Окт 2021 в 18:34

Вы можете попытаться принять файл cookie и продолжить, проверьте приведенные ниже строки кода.

options = Options()
options.add_argument("--disable-notifications")


driver = webdriver.Chrome(options=options,"ChromeDriver_Path")
driver.maximize_window()
driver.get('https://www.quattroruote.it/listino/audi/a4-allroad')
sleep(10)

cookie_btn = driver.find_element_by_xpath("//button[text()='Accetta']")
cookie_btn.click()
sleep(3)

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"promo-premium-iframe")))
register_btn = driver.find_element_by_xpath("//a[normalize-space()='Accedi o Registrati']")
register_btn.click()

Iframe доступен, поэтому просто переключился на iframe, попытался выполнить регистрацию.

0
YaDav MaNish 15 Окт 2021 в 18:05