点击输入字段
<input id="dp1" class="span2" type="text" value="02-16-2012">
当浏览器处于后台时,不显示日期选择器弹出窗口。 使用javasccript或jquery单击输入字段也不会显示日期选择器弹出窗口。
driver.find_element_by_css_selector('#dp1').click() # works when the browser window is in the foreground
document.querySelector('#dp1').click() # does not display the date picker popup
$('#dp1').click() # does not display the date picker popup
是我在this page上使用的三种技术。
我在selenium网格上运行测试,每个查看显示可以同时打开多个浏览器,可能会将包含datepicker元素的浏览器页面放在后台,这会导致测试不可靠。
所以主要问题是 -
当浏览器在后台时,为什么selenium webdriver点击不起作用?
第二个问题是 - 我如何解决这个限制?
注意: 使用Selenium发送密钥或使用jquery / js直接更改值是不一个选项,因为它绕过了datepicker弹出窗口并且实际上没有测试UI方面而只测试功能。
driver.find_element_by_css_selector('#dp1').send_keys('02-18-2014')
$('#dp1').val('02-18-2014') # updates the date but without using the datepicker
在mac上使用selenium v2.39和firefox2.26,在linux上使用firefoxv17
答案 0 :(得分:1)
所以我认为你可以使用它:
$('#dp1').datepicker("show");
当使用selenium时。会以不同的方式稍微完成。使用selenium javascript executor同时使用上面的代码,然后解析html。你可以通过这个链接获得更好的想法。
http://www.mythoughts.co.in/2013/04/selecting-date-from-datepicker-using.html#.Uvr546FdSBs
答案 1 :(得分:0)
由于文档的原因,有两种方法可以显示datepicker(datepicker的showOn选项 - http://api.jqueryui.com/datepicker/#option-showOn)
可以显示
如果浏览器窗口处于活动状态并且您(或selenium)点击了输入,则会变得更加专注,这就是日期选择器显示的原因。
当浏览器窗口未激活时 - 似乎点击输入并不会使其集中 - 并且datepicker不会显示。
你也可以这样使用 - $(&#39;#dp1&#39;)。datepicker(&#34; show&#34;);
但是你在之前配置了一些选项的datepicker(例如设置自定义日期格式) - datepicker(&#34; show&#34;)方法将取消这些选项(至少它以这种方式适用于我)
恢复:点击datepicker按钮或执行$(&#39;#dp1&#39;)。datepicker(&#34; show&#34;);但要记住datepicker选项。