python selenium принимает файл cookie iframe

#python #selenium #selenium-webdriver #seleniumwire

Вопрос:

Я новичок в python и selenium, и мне нужна помощь. Я не могу принять файл cookie в iframe

Кто-нибудь может мне помочь, пожалуйста?

Спасибо

 from selenium.webdriver.firefox.options import Options
from seleniumwire import webdriver

options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'

driver = webdriver.Firefox(executable_path=r'C:\geckodriver.exe', firefox_options=options)


driver.get('https://autoscout24.de/')
time.sleep(5)
# go to iframe accept cookies
driver.switch_to.frame("gdpr-consent-notice")
driver.find_element_by_css_selector("button[class='mat-focus-indicator solo-button mat-button mat-button-base mat-raised-button cdk-focused cdk-mouse-focused'] div[class='action-wrapper']").cick()



# back to previous frame
driver.switch_to.parent_frame()
time.sleep(5)


driver, quit()
 

Ответ №1:

Я вижу, что идентификатор уникален, тогда вам вообще не нужен CSS Selector .

Вы должны вызвать явное ожидание для переключения iframe .

Они позволяют вашему коду останавливать выполнение программы или замораживать поток до тех пор, пока условие, которое вы передадите, не разрешится. Условие вызывается с определенной частотой до тех пор, пока не истечет время ожидания. Это означает, что до тех пор, пока условие возвращает ложное значение, оно будет продолжать пытаться и ждать.

Код :

 driver = webdriver.Firefox(executable_path=r'C:\geckodriver.exe', firefox_options=options)
driver.maximize_window()
wait = WebDriverWait(driver, 20)
driver.get('https://autoscout24.de/')
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "gdpr-consent-notice")))
button = driver.find_element_by_id('save')
driver.execute_script("arguments[0].click();", button)


# back to previous frame
driver.switch_to.parent_frame()
time.sleep(5)
 

Импорт :

 from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC