例如,如果我想使用python-selenium在www.priceline.com上选择特定的登记入住和退房日期,我该怎么办?
这是日历html(或者你可以在www.priceline.com上找到它)
<input name="checkInDate" pclnfield="ts" pclnoptional="true" preformat="" pclnprepop="false"
pclnfocusnext="hotel-checkout" type="text" id="hotel-checkin" placeholder="Choose Date"
autocomplete="off" class="hasDatepicker">
这是我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
url = 'http://www.priceline.com/' #
driver = webdriver.Firefox()
driver.get(url)
sleep(3)
select = Select( driver.find_element_by_id('hotel-checkin') )
然后是什么?
答案 0 :(得分:1)
首先点击日期选择器输入:
driver.find_element_by_xpath("//input[@id='hotel-checkin'").click()
然后等待日历出现:
wait.until(lambda driver: driver.find_element_by_xpath("//div[@id='ui-datepicker-div']"))
然后点击其中的某个日期:
driver.find_element_by_xpath("//div[@id='ui-datepicker-div']//a[@class='ui-state-default'][text()='HERE_IS_DATE_LIKE_10']")).click() # meaning //div[@id='ui-datepicker-div']//td/a[@class='ui-state-default'][text()='10']
这样的事情。如果您使用某些浏览器开发工具检查日历,您会看到每个日期&#39;元素是td
元素,其中包含属性data-year
和data-month
,您可以围绕它们进行游戏。与//div[@id='ui-datepicker-div']//td[@data-year='2014'][@data-month='8']/a[@class='ui-state-default'][text()='10']
一样