Selenium Python find_element Xpath 找不到 xpath

Selenium Python find_element Xpath cant find xpath

我想访问一个带有 selenium 的网站,然后出现了一个 addblock-window,我需要点击一个按钮让它消失。

尽管我可以找到我的 XPath(//button[@title='Einverstanden'], /html/body/div/div[2]/div[3]/div[1]/button[@title = 'Einverstanden']//button[contains(text(),"Einverstanden")]') 在浏览器中,

我的 Python 脚本找不到它。而且我似乎找不到错误。

这是我的代码。

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

driver  = webdriver.Firefox()

driver.implicitly_wait(30)

driver.get("``https://www.derstandard.at/story/2000134260361/endspiel-vor-gericht-prozess-gegen-boris-becker-startet-in-london``")
driver.maximize_window()
x = driver.find_element(By.XPATH, "//button[@title = 'Einverstanden']")
print(x)

这是我遇到的错误。

按钮包含在iframe中,在这种情况下,您首先需要切换到iframe,然后访问元素

这应该有效:

driver.get("https://www.derstandard.at/consent/tcf/")
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//div[contains(@id, 'sp_message_container')]//iframe")))
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button[title='Einverstanden']"))).click()

等待导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

如果你想再次切换到默认框架,你可以在需要时使用它:

driver.switch_to.default_content()