我正在尝试在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到达日期选择器页面时,它单击日期选择器。 但是,Selenium单击日期选择器无效! 日历未出现 ,并且未生成日历的HTML代码。

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


最后说明:

  • 为什么选择m.enterprise.com而不是普通的enterprise.com? 移动版本似乎更易于使用。
  • 为什么使用Firefox而不是Chrome或Safari? 我没有真正的偏爱...如果有理由在其他浏览器中进行尝试,我很乐意尝试。
  • 在页面加载时,我使用了一种很死脑筋的暂停/睡眠方式: time.sleep() 我已经尝试了更复杂的替代方法,例如implicitlyWait() ,并且我愿意对此进行更多的研究。
  • 除了上述所有注释外,前景/背景窗口似乎是这里问题的症结所在。

  ask by solvingPuzzles translate from so

本文未有回复,本站智能推荐:

1回复

使用Python / Selenium从日期选择器中选择日期后提取格式化日期

我目前正在使用Python 2.7.8和最新版本的Selenium(我相信是2.45)。 我将使用jQuery UI的datepicker示例来回答我的问题。 我已成功验证当前日期为突出显示的日期,然后选择2天以外的日期(如果大于等于26,则选择之前的日期)。 我的问题是,如何在使用P
2回复

如何使用phpunit webdriver selenium在jQuery Datepicker中选择currentdate

这是我们使用的日期选择器的示例 : (左下角的那个) 日期选择器会在当月自动打开。 但是,如何选择当前日期? 假设今天是第5个,那么我想选择“ 5”,如果是第1个,则应该选择第一个。 如果可能这样的话; / 提前致谢 亲切的问候
2回复

如何从datepicker-Selenium Webdriver中选择年份和月份

我正在尝试从下拉菜单中选择“ 年和月 ”,但是它采用的是日期选择器的形式。 我无法按ID定位,而是按类选择值。 请任何人都可以使用javascript executor用Java给我示例代码。 这是我的html标签:
1回复

Python Selenium + Datepicker点击

我一直在敲打我的脑袋周围试图得到一个房间一样的价格, 这通过单击第一个可用的(绿色),例如日期选择签入的输入,然后点击第一个可用的日期选择器检出输入,这样产生的铅丹期的价格。 我的代码很乱,所以我真的很感激,如果有人可以发布一个更干净的代码来实现这一目标。 我正在使用Python s
2回复

从Datepicker获取可用性

我试图通过单击日期选择器日历中的下一个按钮来获得无家可归的每一天的价格,但是没有运气。 我当前的代码是这样的: 它们都可以工作,但只能工作1个月。 我希望能够设置X个月。 例如对于无家可归者,我在第一次打开日历后立即尝试使用self.driver.find_element_by
3回复

将Java变量传递给jQuery函数的JavascriptExecutor参数

嗨,我正在使用Selenium Webdriver,我尝试通过传递Java变量来访问有效ID来执行jQuery脚本。 这是代码。 我想在jQuery函数中同时使用move和date变量。
1回复

Python Selenium + Datepicker问题

我想通过点击日历查看每天的可用性/价格,查看日期是否被占用,点击next按钮,这样就可以跳转到https://www.homeaway.pt/arrendamento-ferias/p418841下个月。 我还想点击到货日期,然后选择结账日期,以便我可以看到它的价格。 我遇到了问题,
1回复

Python Selenium Datepicker选择年,月和日

我试图在日期选择器中分别选择开始日期和结束日期的年,月和日: 但是日期年和月返回'TimeoutExceptionerror' 有人可以帮忙吗? 谢谢 : )
2回复

如何在html中点击zebra datepicker中的日期?

在接受了人们的建议后,我想我到达了某个地方。 我再次陷入困境。 我必须使用datepicker从网站上抓取数据。 html说网站正在使用Zebra数据贴纸。 我必须点击日期然后刮掉数据。 我很难点击日期。 有人能帮我吗? 我必须点击1/06/19。 我无法找到办法做到这一点。
3回复

如何使用Selenium和Python更改datepicker的值

在table元素中,我有以下用于日期选择器的内容: 我可以得到输入元素,如下所示: 那样就好。 但是,当我尝试更改此元素上的值时,它似乎会附加到当前值上。 因此,日期选择器的值为'2020-07-152020-07-01' 如何删除value属性并输入一个新属性?