我试图通过单击datepicker日历中的“下一步”按钮来获取homeaway中每一天的价格,但没有运气。在
我当前的代码类似于:
def handle(self, *args, **options):
def homeaway(self):
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
driver.maximize_window()
wait = WebDriverWait(driver, 10)
url = 'https://www.homeaway.pt/arrendamento-ferias/p1418427a?uni_id=1590648'
driver.get(url)
# pick start date
start_date = wait.until(EC.visibility_of_element_located((
By.CSS_SELECTOR,
".quotebar-container input[name=startDateInput]")))
start_date.click()
first_available_date = wait.until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, "#ui-datepicker-div td.full-changeover > a")))
ActionChains(driver).move_to_element(first_available_date).perform()
driver.find_element_by_css_selector(
"#ui-datepicker-div td.full-selected.full-changeover > a").click()
# pick end date (TODO: violates DRY principle, refactor!)
end_date = wait.until(EC.visibility_of_element_located(
(By.CSS_SELECTOR, ".quotebar-container input[name=endDateInput]")))
end_date.click()
first_available_date = wait.until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, "#ui-datepicker-div td.full-changeover > a")))
ActionChains(driver).move_to_element(first_available_date).perform()
driver.find_element_by_css_selector(
"#ui-datepicker-div td.full-selected.full-changeover > a").click()
# get the calculated price
price = wait.until(EC.visibility_of_element_located(
(By.CSS_SELECTOR, ".price-quote .price-total")))
print(price.text.encode('ascii', 'ignore'))
driver.close()
他们都工作,但只工作一个月。我想改为设定X个月。例如,对于homeaway,我在第一次打开日历后尝试使用self.driver.find_element_by_css_selector('.ui-datepicker-next.ui-corner-all').click()
,但是我得到了一个ElementNotVisibleException
提前谢谢
我可以使用
driver.execute_script('$( "a.ui-datepicker-next" ).click()')
来实现这个功能,因为其他的一切都给了我ElementNotVisibleException
的功能,然后我注意到其中涉及到javascript我不想直接使用
Javascript
或jQuery
,所以如果有人有更好的建议,我可以试试。在但是仍然有一些怪癖,例如每次我获得某个月的可用性时,我必须手动重置日历。在
这是我的最终代码:
^{pr2}$若要在datepicker已打开时单击“下个月”按钮,请尝试以下操作:
要多次单击“下个月”按钮,每次都需要重新定义
elements
,因此最好将这两个操作(定义列表和按钮单击)作为方法click_next_month()
。在如果有任何问题,请告诉我
相关问题 更多 >
编程相关推荐