找到该链接的最简单方法是使用下面的 XPath,
//div[text()='Accept all']
一些反馈,
根据文档
警告:不要混合隐式和显式等待。
换句话说,不要同时使用
.implicitly_wait()
和 WebDriverWait
。
根据 Selenium 领导和贡献者的说法,您不应该使用隐式等待。请根据需要使用
WebDriverWait
。
从 Selenium 4.6 开始,添加了 SeleniumManager,它会自动为您下载和配置适当的驱动程序。因此,您不再需要使用 DriverManager 或指定路径等。
您实际上并未将
chrome_options
传递给 Chrome 实例化。
考虑到所有这些,您更新后的代码看起来像
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("_tt_enable_cookie=1")
url = "https://www.kayak.co.uk/flights/LON-MXP/2024-06-14/2024-06-16?fs=takeoff=1724,2200__1628,2200;stops=~0&sort=bestflight_a"
driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()
driver.get(url)
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[text()='Accept all']"))).click()