我想廢棄 immowelt.de,但我無法通過 cookie 橫幅。我嘗試使用 sleep() 和 WebDriverWait 等待橫幅加載,但是它們都不起作用。
這是 webdriver 的代碼
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
chrome_driver_path = '.../chromedriver'
url = 'https://www.immowelt.de/immobilienpreise'
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.get(url)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="uc-center-container"]/div[2]/div/div/div/div[1]/button'))).click()
driver.close()
這是帶有睡眠的代碼
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
chrome_driver_path = '.../chromedriver'
url = 'https://www.immowelt.de/immobilienpreise'
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.get(url)
time.sleep(5)
driver.find_element(By.XPATH, '//*[@id="uc-center-container"]/div[2]/div/div/div/div[1]/button').click()
driver.close()
uj5u.com熱心網友回復:
該元素OK在
解決方案
要單擊OK您必須使用shadowRoot.querySelector(),并且可以使用以下定位器策略:
代碼塊:
driver.get("https://www.immowelt.de/immobilienpreise") time.sleep(5) element = driver.execute_script("""return document.querySelector('#usercentrics-root').shadowRoot.querySelector("button[data-testid='uc-accept-all-button']")""") element.click()
參考
您可以在以下位置找到一些相關的討論:
- 元素為 data-testid 時如何處理彈出“接受所有 cookie” - 在 Python 中使用 Selenium
- 無法使用 Python Selenium 在 shadow-root(打開)中定位元素
- 如何使用 Python 和 Selenium 通過 cookie 協議頁面?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424676.html
