Python Selenium 按钮点击 cookie

Python Selenium button click for cookies

问题在于接受 cookie,我不确定为什么没有任何效果,尝试 By.CLASS, By.NAME 等接受 cookie "Sutinku su visais" 必须选择

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

PATH = Service("C:\Program Files (x86)\chromedriver.exe")
driver = webdriver.Chrome(service=PATH)

driver.get("https://www.telia.lt/privatiems")
driver.implicitly_wait(5)

link = driver.find_element(By.CLASS_NAME, "btn btn-primary js-cookie-modal-accept")
link.click()

不管我放多长时间 pause/wait,一直都是同样的问题:

 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to 
 locate element

如果有人能教我如何根据不同的标准在 HTML 中找到我想要的按钮,我将不胜感激,因为我已经尝试过无法实现任何目标。

HTML 我正在尝试接受 cookies:

<div class="button-group button-group--pull-left" data-gtm-vis-has-fired-2746359_1882="1">
                <input class="btn btn-primary js-cookie-modal-accept" type="submit" value="Sutinku su visais" data-gtm-vis-has-fired-2746359_1882="1">
                <a class="btn btn-link js-cookie-modal-settings" data-gtm-vis-has-fired-2746359_1882="1">
                    Slapukų nustatymai
                </a>
            </div>

Class 名称在 Selenium 中不支持空格或多个空格 CLASS_NAME

请隐藏这个

btn btn-primary js-cookie-modal-accept

通过放置 . 并删除空格进入 CSS selcetor

.btn.btn-primary.js-cookie-modal-accept

因此您的有效代码块将是:

link = driver.find_element(By.CSS_SELECTOTR, ".btn.btn-primary.js-cookie-modal-accept")
link.click()

根据 OP 的要求,这是检查 HTML DOM

的一种方法

检查步骤:

Press F12 in Chrome -> 转到 element 部分 -> 执行 CTRL + F -> 然后粘贴 xpath 并查看是否需要 element正在 突出显示 1/1 匹配节点。

我还建议您使用由 WebDriverWait 驱动的 ExplicitWait

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn.btn-primary.js-cookie-modal-accept"))).click()
except:
    print("Could not click")
    pass

进口:

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