当浏览器处于后台时,Selenium点击Bootstrap datepicker不起作用

时间:2014-02-10 22:33:49

标签: javascript jquery selenium selenium-webdriver

点击输入字段

<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 v​​2.39和firefox2.26,在linux上使用firefoxv17

2 个答案:

答案 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

可以显示

  1. 关于你附加datepicker的元素的FOCUS - 在你关注的情况下(不是点击)
  2. 在datepicker的CLICK按钮上
  3. 如果浏览器窗口处于活动状态并且您(或selenium)点击了输入,则会变得更加专注,这就是日期选择器显示的原因。

    当浏览器窗口未激活时 - 似乎点击输入并不会使其集中 - 并且datepicker不会显示。

    你也可以这样使用 - $(&#39;#dp1&#39;)。datepicker(&#34; show&#34;);

    但是你在之前配置了一些选项的datepicker(例如设置自定义日期格式) - datepicker(&#34; show&#34;)方法将取消这些选项(至少它以这种方式适用于我)

    恢复:点击datepicker按钮或执行$(&#39;#dp1&#39;)。datepicker(&#34; show&#34;);但要记住datepicker选项。