单击硒中的元素

安舒尔·塔库尔

大家好,我正在尝试在以下网站 booking.com 上使用 python 练习 selenium,因为我想单击下个月可以选择的元素。我试图为它编写 xpath,在 chrome 控制台上检查时它甚至是有效的。但是它没有单击下面的下一个箭头是快照,我想单击下一个箭头和控制台图片供您参考。你能告诉我我哪里错了吗在此处输入图像描述

在此处输入图像描述

from selenium import webdriver
import time
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(executable_path='C:\chromedriver')


driver.get("https://www.booking.com/")
time.sleep(4)
driver.maximize_window()
time.sleep(2)
#place to add the destination location


driver.find_element(By.XPATH, "//input[@placeholder='Where are you going?']").send_keys("Jaisalmer")

time.sleep(5)
                     

#location name select
driver.find_element(By.XPATH, ".//*[contains(@data-label,'Suryagarh ')]").click()
time.sleep(3)

driver.find_element(By.CLASS_NAME, "sb-date-field__icon sb-date-field__icon-btn bk-svg-wrapper calendar-restructure-sb").click()
time.sleep(6)
driver.execute_script("window.scrollTo(24,document.body.scrollHeight);")
nextbutton = driver.find_element(By.XPATH, "//div[@class='bui-calendar__control bui-calendar__control--next']").click()

#for i in range(3):
    #nextbutton.click()

time.sleep(4)
driver.quit()
预言家

您的代码几乎是正确的。您只需要在单击next month按钮之前直接添加一个短暂的延迟。
此外,您不应使用所有这些硬编码的暂停,例如time.sleep(4)应使用预期条件显式等待。
我知道您想点击下个月按钮 3 次?
此代码将执行您要查找的操作:

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

driver = webdriver.Chrome(executable_path='C:\chromedriver')
wait = WebDriverWait(driver, 20)

driver.get("https://www.booking.com/")
driver.maximize_window()
wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='Where are you going?']"))).send_keys("Jaisalmer")
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(@data-label,'Suryagarh ')]"))).click()
for i in range(3):
    time.sleep(0.5)
    wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@data-bui-ref='calendar-next']"))).click()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章