Javascript 当浏览器处于后台时,Selenium点击引导日期选择器不工作

Javascript 当浏览器处于后台时,Selenium点击引导日期选择器不工作,javascript,jquery,selenium,selenium-webdriver,Javascript,Jquery,Selenium,Selenium Webdriver,单击输入字段 <input id="dp1" class="span2" type="text" value="02-16-2012"> 这是我在游戏中使用的三种技巧 我在selenium网格上运行测试,每个查看显示可以同时打开多个浏览器,可能会将包含datepicker元素的浏览器页面放在后台,这会导致不可靠的测试 因此,主要问题是— 为什么当浏览器位于后台时,selenium webdriver的单击不起作用? 第二个问题是— 我如何绕过这个限制 注: 使用Selenium发送

单击输入字段

<input id="dp1" class="span2" type="text" value="02-16-2012">
这是我在游戏中使用的三种技巧

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

因此,主要问题是—

为什么当浏览器位于后台时,selenium webdriver的单击不起作用?

第二个问题是— 我如何绕过这个限制

注: 使用Selenium发送键或直接使用jquery/js更改值是而不是一个选项,因为它绕过了datepicker弹出窗口,实际上并不测试UI方面,只测试功能


在mac上使用selenium v2.39和firefox2.26,在linux上使用firefoxv17,所以我认为您可以使用:

 $('#dp1').datepicker("show");
当使用selenium时。它将以不同的方式完成。在使用上述代码时使用selenium javascript executor,然后解析html。您可以通过此链接获得更好的想法


由于文档原因,有两种方式可以显示日期选择器(显示日期选择器的选项-)

它可以显示出来

  • 在您附加日期选择器的元素的焦点上-在您的情况下,在焦点上(而不是单击)
  • 日期选择器的单击按钮
  • 当浏览器窗口处于活动状态时,您(或selenium)单击输入,它将成为焦点,这就是datepicker显示的原因

    当浏览器窗口处于非活动状态时(似乎单击输入不会使其聚焦),日期选择器也不会显示

    您也可以使用这种方式-$(“#dp1”).datepicker(“show”)

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


    继续:单击日期选择器按钮或执行$('#dp1')。日期选择器(“显示”);但请记住日期选择器选项。

    它也可以在后台工作。我想你在某些地方弄错了。为什么不在selenium中使用javascript执行器。然后尝试运行jquery脚本,如$('#dp1')。通过javascript执行器单击()。但事实并非如此。我确实尝试过在浏览器位于前景和背景之间切换,selenium单击只有在浏览器位于前景时才起作用。另外,javascript单击不会加载datepicker弹出窗口。只需在我在问题中发布的链接上尝试javascript代码,使用firebug,您就会看到我所说的内容。“show”命令有效。我读了你的博客。不错。我想如果您继续使用xpath,这将很容易。因为我们可以使用selenium IDE轻松获得xpath值。在我的例子中,我使用selenium ide来获得年和月的点击量。然而,点击一天并没有这样做。因此,我也使用了月份的xpath结构作为日期。成功了。希望有人觉得这个有用。
    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
    
     $('#dp1').datepicker("show");