Py学习  »  Python

无法在弹出窗口中单击Selenium(python)中的“全部接受”cookie

Anonymous • 2 年前 • 541 次点击  

我正在尝试单击弹出窗口上的接受按钮以获取cookies。 以下是我尝试过的代码:

driver.get(r'https://www.studydrive.net/')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.sc-gtsrHT.iETHdM"))).click()

以下是错误:

raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

我也尝试过使用X-path,但无法点击按钮。 我们非常感谢您的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130752
 
541 次点击  
文章 [ 1 ]  |  最新文章 2 年前
Prophet
Reply   •   1 楼
Prophet    2 年前

这个弹出窗口在屏幕上 shadow dom .
Selenium不提供使用影子DOM元素的显式支持,因为它们不在当前DOM中。这就是为什么我们会 NoSuchElementException 尝试访问`shadow dom中的元素时出现异常。
对于以下JavaScript,这应该可以工作:

driver.get(r'https://www.studydrive.net/')
time.sleep(5)
accept_all_btn = driver.execute_script('''return document.querySelector('#usercentrics-root').shadowRoot.querySelector('button[aria-label="Accept All"]')''')
accept_all_btn.click()

查看更多解释 here here