Selenium – 无法单击()此网站的弹出按钮

问题描述 投票:0回答:1
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

browser = webdriver.Chrome()
browser.get('https://www.chefkoch.de/')
WebDriverWait(browser, 3).until(EC.element_to_be_clickable((By.XPATH,"//button[contains(text(),'Akzeptieren und weiter')]"))).click()

presence_of_element_ located而不是可点击的,通过CSS_SELECTOR,实际的XPATH或完整长度的实际XPATH,它们都不起作用。

我只想单击第一个出现的弹出窗口左侧按钮上的()。

编辑

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

browser = webdriver.Chrome()
browser.maximize_window()
browser.get('https://www.chefkoch.de/')

WebDriverWait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@id='sp_message_iframe_847995']")))
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,"(//button[text()='Zustimmen'])[1]"))).click()
browser.switch_to.default_content()

WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="w-header"]/div[1]/div/div[2]'))).click()

到目前为止一切都很好... 下一个叠加层来了。这个似乎不是 iframe,而且无论我尝试了什么,都无法与此容器上/中的任何内容进行交互

输入字段是我感兴趣的

python selenium-webdriver popup
1个回答
1
投票

假设这是您要单击的按钮:

您需要先切换到

IFRAME
,然后再对按钮执行
click()
。请参考以下工作代码:

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

browser = webdriver.Chrome()
browser.maximize_window()
browser.get('https://www.chefkoch.de/')

# Switch into the IFRAME
WebDriverWait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@id='sp_message_iframe_847995']")))

# Click on Zustimmen button
WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH,"(//button[text()='Zustimmen'])[1]"))).click()

# Come out of IFRAME
browser.switch_to.default_content()
© www.soinside.com 2019 - 2024. All rights reserved.