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)
这似乎打开了日历,我还可以列出可选择的日期:
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'))
但是当我想跳到下一个活跃的月份时,它会一直显示相同的初始月份,这是因为这不起作用:
self.driver.find_element_by_css_selector('.stab-calendar-controls-next').click()
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()
以下是正在运行的整个代码。第一次它会打印当前和下一个的日期。然后是接下来的两个月。
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'))
| 归档时间: | 
 | 
| 查看次数: | 470 次 | 
| 最近记录: |