我在下面寫了一個簡單的代碼,打開預訂日歷,點擊到下個月,但日歷似乎沒有切換到下個月。有什么明顯的東西我失蹤了嗎?
driver.get("https://www.tablecheck.com/shops/peterluger/reserve")
driver.maximize_window()
driver.find_element_by_id("reservation_start_date").click()
driver.find_element(By.XPATH, "//div[@aria-label='Next Month']").click()
uj5u.com熱心網友回復:
外部 HTML
<input class="form-control mobidate i-txt refresh-menu-items mbsc-comp" readonly="" placeholder="-- Select Date --" type="text" name="reservation[start_date]" id="reservation_start_date" value="2021-10-13">
表明它具有形式為 的值屬性2021-10-13。
我們不需要點擊這個input field然后select a value from the calendar。
相反,我們可以直接pass the value attribute用execute script在Python的硒系結。
driver = webdriver.Chrome(driver_path)
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get("https://www.tablecheck.com/shops/peterluger/reserve")
date = wait.until(EC.visibility_of_element_located((By.ID, "reservation_start_date")))
driver.execute_script("arguments[0].scrollIntoView(true);", date)
driver.execute_script("arguments[0].setAttribute('value', '2021-10-13')", date)
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
uj5u.com熱心網友回復:
在單擊元素之前,先嘗試移動到目標。
了解ActionChains:
driver.get("https://www.tablecheck.com/shops/peterluger/reserve")
driver.maximize_window()
driver.find_element_by_id("reservation_start_date").click()
element = driver.find_element(By.XPATH, "//div[@aria-label='Next Month']")
action = ActionChains(driver)
action.move_to_element(element).click(element).perform()
以下匯入:
from selenium.webdriver import ActionChains
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/310931.html
