我已經嘗試了幾乎所有方法并在 SO 上進行了搜索,但無法通過 gmx.com 上的 cookie 接受。希望有人能幫忙。到目前為止,我已經嘗試過:
driver = webdriver.Chrome(CHROMEPATH)
driver.get('https://www.gmx.com')
time.sleep(5)
cookie_accept = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, '//button[@id="onetrust-accept-btn-handler"]')))
cookie_accept.click()
===與===
driver = webdriver.Chrome(CHROMEPATH)
driver.get('https://www.gmx.com')
wait = WebDriverWait(driver, 15)
wait.until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, "div[style='onetrust-style'] button[id*='onetrust-accept-btn-handler']")))
driver.find_element_by_css_selector("div[style='onetrust-style'] button[id*='onetrust-accept-btn-handler']").click()
time.sleep(10)
driver.quit()
我究竟做錯了什么?!任何幫助是極大的贊賞!!
uj5u.com熱心網友回復:
此元素位于 iframe 內。iframe 內的 iframe。因此,您必須切換到內部 iframe 才能訪問該元素。
像這樣的東西:
driver.get("https://www.gmx.com/consentpage")
wait = WebDriverWait(driver, 20)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.permission-core-iframe")))
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[contains(@src,'plus')]")))
wait.until(EC.visibility_of_element_located((By.XPATH, '//button[@id="onetrust-accept-btn-handler"]'))).click()
uj5u.com熱心網友回復:
元素Agree and continue在嵌套內 元素,所以你必須:
誘導WebDriverWait用于父 幀可用,并切換到它。
誘導WebDriverWait為孩子 框架可用,并切換到它。
Induce WebDriverWait使所需元素可點擊。
您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
driver.get("https://www.gmx.com/consentpage") WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.permission-core-iframe"))) WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://plus.gmx.com/lt']"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()使用XPATH:
driver.get("https://www.gmx.com/consentpage") WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='permission-core-iframe']"))) WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@src, 'https://plus.gmx.com/lt')]"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='onetrust-accept-btn-handler']"))).click()
注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC瀏覽器快照:

參考
您可以在以下位置找到一些相關討論:
- iframe下#document的處理方式
- 通過Selenium和python切換到iframe
- selenium.common.exceptions.NoSuchElementException:訊息:沒有這樣的元素:嘗試使用硒單擊“下一步”按鈕時無法定位元素
- python中的硒:NoSuchElementException:訊息:沒有這樣的元素:無法定位元素
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384015.html
上一篇:selenium.common.exceptions.InvalidArgumentException:訊息:無效引數:用戶資料目錄已在使用真實Chrome瀏覽器錯誤
