无法点击接受Cookies按钮
我在找点击接受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