psy*_*ok7 5 python selenium datepicker web-scraping
我试图让每一天的可用性/价格https://www.homeaway.pt/arrendamento-ferias/p418841点击日历,检查这天被占用与否,点击next按钮,以便它可以跳到下个月.
我还想点击到货日期,然后选择结账日期,以便我可以看到它的价格.
我遇到了问题,因为我尝试使用chrome工作的命令但是它们似乎不能在selenium中工作.
例如:
我做:
self.driver.get(url)
wait = WebDriverWait(self.driver, 10)
try:
elem = wait.until(
EC.visibility_of_element_located(
(
By.CSS_SELECTOR,
"#startDateInput"
)
)
)
except TimeoutException:
pass
else:
elem.send_keys(Keys.NULL)
Run Code Online (Sandbox Code Playgroud)
这似乎打开了日历,我还可以列出可选择的日期:
for x in self.driver.find_elements_by_css_selector(".stab-calendar-day.stab-calendar-day-active.stab-calendar-day-selectable.pull-left"): print(x.get_attribute('data-formatted-date'))
Run Code Online (Sandbox Code Playgroud)
但是当我想跳到下一个活跃的月份时,它会一直显示相同的初始月份,这是因为这不起作用:
self.driver.find_element_by_css_selector('.stab-calendar-controls-next').click()
Run Code Online (Sandbox Code Playgroud)
selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:{"method":"css selector","selector":".stab-calendar-controls-next"}
关于我如何获得每套选定日期房屋的可用性/价格的任何想法?
我不确定您到底想实现什么目标,但如果您遇到问题只是您无法单击下一步按钮。解决方案很简单。请更改选择器以单击子元素,它将起作用。我已经测试过,它可以在 Firefox 上运行。
driver.find_element_by_css_selector(".stab-calendar-controls-next > i").click()
Run Code Online (Sandbox Code Playgroud)
以下是正在运行的整个代码。第一次它会打印当前和下一个的日期。然后是接下来的两个月。
driver = webdriver.Firefox()
driver.get("https://www.homeaway.pt/arrendamento-ferias/p418841")
wait = WebDriverWait(driver, 10)
try:
elem = wait.until(
EC.visibility_of_element_located(
(
By.CSS_SELECTOR,
"#startDateInput"
)
)
)
except TimeoutException:
pass
else:
elem.send_keys(Keys.NULL)
for x in driver.find_elements_by_css_selector(".stab-calendar-day.stab-calendar-day-active.stab-calendar-day-selectable.pull-left"):
print(x.get_attribute('data-formatted-date'))
# driver.find_element_by_xpath("//*[@class='stab-calendar-controls-next']/i").click()
driver.find_element_by_css_selector(".stab-calendar-controls-next > i").click()
for x in driver.find_elements_by_css_selector(".stab-calendar-day.stab-calendar-day-active.stab-calendar-day-selectable.pull-left"):
print(x.get_attribute('data-formatted-date'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |