【问题标题】:Selenium is not clicking on the cookie accept buttonSelenium 没有点击 cookie 接受按钮
【发布时间】:2021-07-28 18:47:54
【问题描述】:

我试图点击 cookie 接受按钮,但 selenium 没有点击它。有人可以帮帮我吗?

driver = webdriver.Chrome(path)
driver.get('https://www.bisnode.de/upik/')
try:
    buttonlink = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "onetrust-accept-btn-handler"))
    )
    buttonlink.click()
    time.sleep(10)
except:
    driver.quit()

编辑: 有人提到我使用了一个存在两次的 ID,所以我应该查看另一个 CSS 选择器。所以我更换了线路,但它仍然无法正常工作。

buttonlink = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))
        )
        buttonlink.click()

它打开了 chrome 浏览器和网页,然后它就退出了。没有错误输出。

【问题讨论】:

  • 没有输出错误?只是没有动作?你在使用无头模式吗?请阅读本文stackoverflow.com/help/how-to-ask
  • 无输出错误,打开页面后退出程序。什么是无头模式?

标签: python css selenium selenium-webdriver click


【解决方案1】:

我花了 30 分钟解决这个问题。

问题是在执行相应的脚本之前,该按钮是不可点击的。 所以,这里需要的是等到父 div 的样式变为 bottom: 1rem'

解决方案:

import time

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


url = 'https://www.bisnode.de/upik/'
driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
driver.get(url)
wait = WebDriverWait(driver, 15)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[style='bottom: 1rem'] button[id*='onetrust-accept-btn-handler']")))
driver.find_element_by_css_selector("div[style='bottom: 1rem'] button[id*='onetrust-accept-btn-handler']").click()
time.sleep(10)
driver.quit()

【讨论】:

    【解决方案2】:

    那里有 2 个 ID 为 onetrust-accept-btn-handler 的元素,因此您必须更改定位器。
    试试这个css_selectorbutton#onetrust-accept-btn-handler

    【讨论】:

    • 如何在 Chrome 中自己轻松地在功能中找到两个具有相同 ID 的元素?如果我试图用 EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler")) ) buttonlink.click() 替换我的行,它仍然无法正常工作:/
    • 按 F12 打开开发工具。然后在 Elements 选项卡上执行 Ctrl+F 来搜索 DOM 上的元素。然后根据onetrust-accept-btn-handler搜索。您将看到计数 2,您将能够通过搜索字段右侧出现的箭头转到其中的每一个
    • 感谢您的帮助!但它仍然无法正常工作:/
    • 尝试在buttonlink = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "onetrust-accept-btn-handler"))buttonlink.click()之间添加一个短暂的睡眠
    • 我明白了。干得好!我无法在我的计算机上执行此操作,因为它甚至没有安装 Python。我仅根据我在网页上看到的内容进行了回答。
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2021-12-04
    相关资源
    最近更新 更多