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
问题在于接受 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