jQuery datepicker不会在背景硒窗口中加载?

时间:2014-04-20 01:49:57

标签: jquery python selenium datepicker

我正在尝试使用Python中的Selenium以编程方式检查 m.enterprise.com 上的租车价格。在此网站上,用户使用 jQuery Datepicker 1.8.14小部件选择租车的开始和结束日期。


此作品

这是一个包含jQuery Datepicker小部件的示例网站:http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerClickInput.html

这是Datepicker 1.5而不是Datepicker 1.8,但它应该作为玩具示例。

让我们尝试点击Selenium中的Datepicker小部件......

defaultSleep = 3 #seconds
driver = webdriver.Firefox()

url='http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerClickInput.html'
driver.get(url) # datepicker example
time.sleep(defaultSleep)
driver.find_element_by_id('date1').click() # THIS WORKS -- calendar appears.

以上示例正常运行。当我们使用Selenium点击一个datepicker元素时,日历会出现,并生成日历的HTML代码。无论Selenium驱动的Firefox窗口是在前台还是在后台,此示例都有效。


除非前景中的Selenium驱动窗口,否则这不起作用:

继续我们的玩具示例,让我们使用Selenium在m.enterprise.com上预订租车预订的前几个步骤。点击这些菜单时,企业似乎会关注上一页,因此按顺序(自动)点击汽车预订菜单非常重要。 (如果我们尝试跳过某些页面或出现故障,则Enterprise会出现“会话超时”错误。)

# PAGE 1: top-level page 
driver.get('http://m.enterprise.com/index.html')
time.sleep(defaultSleep)

# PAGE 2: fill in location where you want to reserve your car
driver.get('https://m.enterprise.com/reserve-car.html?restart=true&cm_sp=Reserve%20a%20Car-_-Body-_-en')
time.sleep(defaultSleep) 
element=driver.find_element_by_class_name('textInput') #place to type your Pick Up Location
element.send_keys("92093") #zip code or city/state
driver.find_element_by_class_name('buttonRight').click() # "Next" button 

# PAGE 3: select location within search results /reserve-car.html
time.sleep(defaultSleep)
# by making no input here, we default to selecting the first rental location in the list
driver.find_element_by_class_name('buttonRight').click() 

# PAGE 4: DO THE DATEPICKER. (choose time and date of car rental)
time.sleep(defaultSleep)
driver.find_element_by_id('datepickerPickup').click() #click on a datepicker

...('datepickerPickup').click()行的结果好坏参半。在对行为做了一些记录之后,我把它归结为两个关键场景:

场景1。您已使用鼠标选择了Selenium驱动的Firefox窗口。你只是欣喜地看着Selenium运行浏览器。 datepicker / Selenium交互工作完美无缺。将显示日历,并生成日历的HTML代码。

场景2。您正在使用鼠标点击与Selenium作业无关的某些窗口。 Selenium驱动的Firefox窗口在后台,但您仍然可以看到Selenium正在点击菜单。当Selenium到达datepicker页面时,它会点击datepicker。但是,Selenium点击日期选择器没有任何效果! 日历不会显示,并且不会生成日历的HTML代码。

除非Selenium Firefox窗口位于前台,否则为什么不显示日期选择器日历?


最后的说明:

  • 为什么m.enterprise.com而不是普通的enterprise.com?移动版本似乎更容易使用。
  • 为什么Firefox而不是Chrome或Safari?我没有真正的偏好...如果有理由在不同的浏览器中尝试这个,我很乐意尝试。
  • 当页面加载时,我使用了一种非常脑死亡的暂停/休眠方式:time.sleep()。我尝试了更复杂的替代方案,例如implicitlyWait(),我愿意更多地进行调查。
  • 除了上述所有注释外,前景/背景窗口似乎是问题的症结所在。

0 个答案:

没有答案