无法点击接受Cookies按钮

0 投票
1 回答
30 浏览
提问于 2025-04-14 16:24

我在找点击接受Cookies按钮的路径时遇到了问题。
我使用的网站是 deinhandy.de
当我检查这个网站时,我得到了这个

<button role="button" data-testid="uc-accept-all-button" class="sc-dcJsrY iigiUZ" style="height: 40px; margin: 0px 6px;">
    Alles Akzeptieren
</button>

它的XPATH是

//*[@id="uc-center-container"]/div[2]/div/div/div/div/button

这是网站和检查部分的截图

我尝试了用 find_element 通过XPATH和类名来找到这个按钮,但对我来说还是不行

try:
    cookies = driver.find_element(By.XPATH,'//*[@id="uc-center-container"]/div[2]/div/div/div/div/button')
    cookies.click()
except:
    print("No cookies accept button found")

还有

try:
    cookies = driver.find_element(By.CLASS_NAME,'dcJsrY') # even with 'iigiUZ', 'dcJsrY iigiUZ' 'sc-dcJsrY iigiUZ'
    cookies.click()
except:
    print("No cookies accept button found")

1 个回答

1

如果你看到上面的HTML代码,你会发现你想要的元素 Alles Akzeptieren 被包裹在一个叫做 SHADOW DOM 的结构里。

下面是处理这个问题的有效代码:

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.deinhandy.de/")
time.sleep(5)
# Access the shadow root using JavaScript and click it
cookie_btn = driver.execute_script("""return document.querySelector('div#usercentrics-root').shadowRoot.querySelector('button.sc-dcJsrY.iigiUZ')""")
cookie_btn.click()
time.sleep(10)

如果你遇到类似的问题和解决方案,可以查看这个回答 - https://stackoverflow.com/a/77989300/7598774

撰写回答