python - Selenium 接受 cookie python
问题描述
我正在尝试接受网站上的 cookie,遗憾的是我无法点击“全部接受”按钮。我直接在代码 time.sleep(10) 中,所以等待弹出/同意可见应该没有问题 - 这是我在类似线程中最常看到的。
driver.get("https://fischer.cz")
time.sleep(10)
prijmoutVse = driver.find_element_by_xpath("//*[@class='sc-gtsrHT ctrzIr']")
driver.click(prijmoutVse)
我收到硒错误,说它无法找到元素。即使复制完整的 xpath,我也无法在浏览器中使用 xpath 帮助程序找到它,所有结果都是空的。
我也试过 driver.switch_to.alert 但没有让它工作。
尝试了以下定位器:
//*[@data-testid="uc-accept-all-button"]
/html/body/div[15]//section/div/div[2]/div[3]/div/div[1]/div/button[3]
//*[@id="uc-center-container"]/div[3]/div/div[1]/div/button[3]
这里的同意代码 是来自控制台的元素打印,我注意到有一些“flex”标签,但不太确定它们的含义或是否会造成麻烦。
在这一点上我有点绝望,因为它阻碍了我的工作,我想不出办法解决它。我会很高兴有任何意见或想法如何解决这个问题!
提前致谢
E1:尝试从 Cruisepandey 得到这个错误的答案
Traceback (most recent call last):
File "C:/Users/KDK/Desktop/NOVY SEARCH AUTO/test2.py", line 10, in <module>
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@data-testid='uc-accept-all-button']"))).click()
File "C:\Users\KDK\anaconda3\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Process finished with exit code 1
E2:尝试了 pmadhu 的回答
Traceback (most recent call last):
File "C:/Users/KDK/Desktop/NOVY SEARCH AUTO/test2.py", line 9, in <module>
shadowroot.find_element_by_css_selector("#uc-center-container > div > div.sc-hiKfDv.gGhxCY > div > div.sc-ezzafa.bUHURR > div > button.sc-gtsrHT.ctrzIr").click()
File "C:\Users\KDK\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 430, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "C:\Users\KDK\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 658, in find_element
return self._execute(Command.FIND_CHILD_ELEMENT,
File "C:\Users\KDK\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\KDK\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\KDK\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#uc-center-container > div > div.sc-hiKfDv.gGhxCY > div > div.sc-ezzafa.bUHURR > div > button.sc-gtsrHT.ctrzIr"}
解决方案
该元素位于Shadow root
试试下面的代码。
driver.get("https://www.fischer.cz/")
root1 = driver.find_element_by_id("usercentrics-root")
shadowroot = driver.execute_script("return arguments[0].shadowRoot", root1)
shadowroot.find_element_by_css_selector("#uc-center-container > div > div.sc-hiKfDv.gGhxCY > div > div.sc-ezzafa.bUHURR > div > button.sc-gtsrHT.ctrzIr").click()
推荐阅读
- java - 初始用户名显示剩余的名字在android中为空
- javascript - 在饼图中绑定动态Json数据
- javascript - Javascript 设置 Cookie 以记住表单提交
- amazon-dynamodb - AWS AppSync 未从 DynamoDB 返回所有记录
- asp.net - 如何在本地对 asp.net 应用程序进行负载/压力测试?
- node.js - 从任何服务器运行 Web 浏览器
- javascript - 将事件监听器添加到索引元素
- html - 字体粗细和字体大小不能一起工作
- android - 二进制 XML 文件第 22 行:错误膨胀类 ImageView 仅在根设备上由 android.content.res.Resources$NotFoundException 引起
- linux - 无法使用动态 udp/tcp 端口阻止 ubuntu 20.x 中的应用程序