我正在尝试用Python和selenium刮这个网页,但是当我尝试为cookies同意点击“OK”按钮时,我找不到它:显示同意对话框的图片
https://www.immonet.de/
此操作:driver.find_element_by_css_selector(“#usercentrics-root”)
但当我尝试通过driver.find_element_by_css_selector(“#uc-center-container>footer>div>div>div>div>Button.sc-gsdjrp.cxarzu”)
选择“确定”按钮时,我得到一个错误:
消息:没有这样的元素:找不到元素:{“method”:“CSS Selector”,“Selector”:“#uc-center-container>footer>div>div>div>button.sc-gsdjrp.cxarzu”}
我已经尝试访问这个I-framedriver.switch_to.frame(“uc-cross-domain-bridge”)
,但是我没有得到任何可以使用的结果元素。
如何访问“Cookie-Consultension-”对话框
编辑:在@curtis的帮助下,我发现这是隐藏在一个阴影DOM下的。使用以下工具:
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
shadow_section = expand_shadow_element(driver.find_element_by_css_selector("#usercentrics-root"))
shadow_section.find_element_by_css_selector("#uc-center-container > footer > div > div > div > button.sc-gsDJrp.cXArZu").click()
看起来cookie按钮在一个阴影根下。查看如何获得这些元素:https://medium.com/rate-engineering/a-guide-to-working-with-shadow-dom-using-Selenium-b124992559f