当浏览器处于后台时,Selenium点击Bootstrap日期选择器不起作用



点击输入字段

<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

是我在这一页上使用的三种技巧。

我在selenium网格上运行测试,每个查看显示都可以同时打开多个浏览器,可能会将包含日期选择器元素的浏览器页面放在后台,这会导致测试不可靠。

所以主要的问题是

当浏览器处于后台时,硒网络驱动程序的点击为什么不起作用

第二个问题是——如何绕过此限制?

注意:使用Selenium发送密钥或直接使用jquery/js更改值是而不是选项,因为它绕过了日期选择器弹出窗口,实际上并不测试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

所以我认为你可以使用这个:

$('#dp1').datepicker("show");

当使用硒时。它将以不同的方式稍微完成。使用上面的代码时使用seleniumjavascript执行器,然后解析html。你可以通过这个链接获得更好的想法。

http://www.mythoughts.co.in/2013/04/selecting-date-from-datepicker-using.html#.Uvr546FdSBs

由于文档的原因,有两种方法可以显示日期选择器(日期选择器的showOn选项-http://api.jqueryui.com/datepicker/#option-showOn)

可以显示

  1. 关注您所附加的日期选择器的元素-在您的情况下,关注(而不是点击)
  2. 在日期选择器的"单击"按钮上

当浏览器窗口处于活动状态,并且您(或selenium)单击输入时,它会成为焦点,这就是显示日期选择器的原因。

当浏览器窗口未处于活动状态时-似乎点击输入不会使其集中-并且不会显示日期选择器。

您也可以使用这种方式-$('#dp1').datepicker("show");

但如果您在此之前配置了一些选项(例如设置自定义日期格式)-datepicker("show")方法将取消这些选项(至少对我来说是这样)。

继续:单击日期选择器按钮或执行$('#dp1').datepicker("show");但请记住日期选择器选项

最新更新