簡體   English   中英

如何單擊 selenium-python 中的陰影框?

[英]How to click on the shadowbox in selenium-python?

我正在嘗試創建一個自動化程序。 我想點擊給定網站上的“接受 Cookie”影子框。 以下是我嘗試實現這一目標的方法:

driver = webdriver.Chrome('chromedriver')
driver.get(r'https://www.studydrive.net/')

script = '''return document.querySelector('#usercentrics-root').shadowRoot.querySelector('button[aria-label="Accept All"]')'''
accept_all_btn = driver.execute_script(script)
accept_all_btn.click()

這是我在遵循這種方法后得到的錯誤:

AttributeError: 'NoneType' object has no attribute 'click'

我不知道,我在這里做錯了什么。 任何幫助表示贊賞。 先感謝您。

wait=WebDriverWait(driver, 60)
driver.get("https://www.studydrive.net/")
elem = wait.until(EC.presence_of_element_located((By.ID,"usercentrics-root")))

script = '''return document.querySelector('#usercentrics-root').shadowRoot.querySelector('button[data-testid="uc-accept-all-button"]')'''
accept_all_btn = driver.execute_script(script)
accept_all_btn.click()

只需等待元素,然后繼續單擊全部接受按鈕。 沒有指定 aria-label,所以我使用了另一個屬性。

進口:

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

元素接受所有按鈕位於#shadow-root(打開)

影子根


解決方案

Tto click()你需要使用shadowRoot.querySelector()所需的元素

查詢選擇器

您可以使用以下定位器策略

driver = webdriver.Chrome(service=s, options=options)
driver.get("https://www.studydrive.net/")
time.sleep(5)
accept_all = driver.execute_script('''return document.querySelector("#usercentrics-root").shadowRoot.querySelector("button[data-testid='uc-accept-all-button']")''')
accept_all.click()
        

PS:屏幕上的 cookie 彈出窗口會在很長一段時間后出現,因此您可能需要進行一些等待


參考

您可以在以下位置找到一些相關的詳細討論:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM