在检查元素之前无法通过 xpath 找到

Can not find by xpath until inspect the element

我正在使用 Selenium find_element_by_xpath 单击 cookie 弹出窗口的“接受”按钮。但是它找不到按钮。因此,我尝试在开发控制台中使用 querySelector 找到按钮。此外,querySelector 找不到按钮,但在单击检查按钮后,querySelector 能够找到按钮。

此外,在 dev 元素中搜索 xpath 仅显示 1 of 1。

为什么会这样?如何使用 selenium 单击“接受”按钮?

网站 link:https://www.transfermarkt.com/

xpath: //*[@id="notice"]/div[3]/div[2]/button

检查按钮后。

该元素位于 iframe 中,因此要访问它,您首先必须切换到该 iframe。
你没有提到你使用的是什么语言,所以我会在 Python 中给出我的解决方案。这可以用其他语言完成,也可以通过一些小的语法更改来完成。

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

wait = WebDriverWait(driver, 20)

wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,'iframe[title="SP Consent Message"]')))
wait.until(EC.visibility_of_element_located((By.XPATH, '//button[@title="ACCEPT ALL"]'))).click()

在此 iframe 中完成工作后,您必须使用

切换回默认内容
driver.switch_to.default_content()