我试着从一个网站上搜集一些价格信息,并找到不同州和城市的不同价格。然而,一个"接受Cookie"弹出窗口出现了,我需要单击它,我的代码才能成功,但我很难让Selenium找到任何可以单击的东西
这里是网站www.example.comwww.kettlebellkings.com
下面是按钮的html:
<button role="button" data-testid="uc-accept-all-button" class="sc-eDvSVe hSwgIR" style="margin: 0px 6px;">Accept All</button>
我一直在使用Expected conditions,但每次都超时。下面是我的代码:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
path = "C:\Program Files (x86)\msedgedriver.exe"
driver = webdriver.Edge('www.kettlebellkings.com')
driver.get(url)
element_present = EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[data-testid="uc-accept-all-button"]'))
WebDriverWait(driver, 30).until(element_present)
try:
driver.find_element(By.CSS_SELECTOR, 'button[data-testid="uc-accept-all-button"]').click()
except:
clicker = driver.find_element(By.CSS_SELECTOR, 'button[data-testid="uc-accept-all-button"]')
driver.execute_script("arguments[0].click();", clicker)
但它只是超时了。如果我忽略预期条件:
path = "C:\Program Files (x86)\msedgedriver.exe"
driver = webdriver.Edge('www.kettlebellkings.com')
driver.get(url)
driver.find_element(By.CSS_SELECTOR, 'button[data-testid="uc-accept-all-button"]').click()
退货:
消息:没有此元素:找不到元素:{"方法":" css选择器","选择器":"按钮[数据-测试ID ="uc-accept-all-button"]"}
它似乎也不在iframe中-我在这里错过了什么?
2条答案
按热度按时间vhmi4jdf1#
“接受全部”Cookie按钮位于
Shadow Dom
内,请尝试以下代码:你可以参考下面的链接如何处理阴影dom元素:
https://www.lambdatest.com/blog/shadow-dom-in-selenium/
https://www.seleniumeasy.com/selenium-tutorials/accessing-shadow-dom-elements-with-webdriver
myzjeezk2#
您可以尝试设置一个cookie,将停止弹出窗口只需接受cookie在您的正常浏览器,设置他们在程序和网站将识别它作为您/您的帐户