当前位置: 首页 > 知识库问答 >
问题:

Selenium Webdriver测试期间的多个Firefox实例未正确处理焦点。

窦国源
2023-03-14

我注意到,在网格上并行运行多个selenium firefox测试时,焦点事件处理无法正常工作。我已经确认,当我的每个测试都单独运行,并且给定操作系统的焦点时,测试都会100%通过。我还使用Chrome在网格上并行运行了测试,但没有看到存在的问题。

我在谷歌群组上发现了以下帖子,建议在xvfb的单独实例中启动每个浏览器可能是一个可行的解决方案。https://groups.google.com/forum/?fromgroups#!主题/selenium-Developers/1cAmsYCp2ho[1-25]

测试失败的部分是由于项目中使用了jquery日期选择器。日期选择器在焦点事件上启动,并且由于有多个selenium测试同时执行,webdriver测试将执行。click()命令,但焦点停留的时间不够长,无法显示日期选择器小部件。

.焦点(function(){$input.trigger(“focus”);});

  • jQuery timepicker插件

我的问题是,是否有人以前见过这个问题,并通过一些firefox配置文件设置解决了它。我已尝试加载对问题没有影响的以下属性。

profile.setAlwaysLoadNoFocusLib(true);

测试失败的方式与之前相同,该属性已启用并加载到远程驱动程序Firefox配置文件中。

我需要一种方法来确保focus事件100%被触发,或者解决多个firefox浏览器争夺focus的问题。考虑到Chrome没有显示这些问题,我想知道它是否也会被认为是firefox中的一个bug。

谢谢

共有3个答案

吕衡
2023-03-14

您可以对此进行争论并毫无问题地将其控制在您的控制之下。首先编写一个方法来通过其窗口句柄id来识别弹出窗口。然后,使用JavaScriptExecator在javascript中执行“window.focus()”以强制窗口在您执行其他操作之前聚焦。然后,如果需要,您可以通过其窗口句柄名称关闭弹出窗口。

陆昕
2023-03-14

我在与Jenkins的持续集成环境中也遇到了同样的问题。经过长时间的研究,我在Firefox中发现了一个旧错误,它导致了一个新的配置标志来避免这些问题。

解决方案是在测试使用的火狐配置文件上启用此标志。标志focusmanager.testmode,将其设置为true。

原因是焦点事件只有在firefox窗口处于活动状态时才会触发。如果运行多个测试,则有多个窗口,因此只有活动窗口触发焦点事件。使用此参数,即使对于非活动窗口,也会触发事件。

臧弘和
2023-03-14

@djangofan:错了。无法锁定焦点。在一个窗口中请求焦点之后,在触发操作之前,另一个窗口请求焦点,而您的操作(如向输入字段发送键)就是不起作用。这在我们每天的测试中发生了好几次。很难复制,因为每次测试都会在不同的地方失败。解决方案是在单独的显示器中执行每个浏览器。E、 g.您可以使用Xvfb:

  Xvfb ... -screen 1 1200x800x24 -screen 2 1200x800x24 ...

然后,在启动浏览器时,为其指定一个单独的屏幕:

  browser.setEnvironmentProperty("DISPLAY", ":N.1");
  browser.setEnvironmentProperty("DISPLAY", ":N.2");
  ...
 类似资料:
  • 我有一组只在Visual Studio本地执行的UI测试。决定将它们集成到TFS中,并在每晚的构建中执行测试运行。 你知道我做错了什么吗?

  • TestInstanceFactory defines the API for Extensions that wish to create test class instances. Common use cases include acquiring the test instance from a dependency injection framework or invoking a st

  • 本文向大家介绍JS焦点图,JS 多个页面放多个焦点图的实例,包括了JS焦点图,JS 多个页面放多个焦点图的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇JS焦点图,JS 多个页面放多个焦点图的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍JAVA时间日期处理类实例,包括了JAVA时间日期处理类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。分享给大家供大家参考。具体如下: 希望本文所述对大家的java程序设计有所帮助。

  • 我有以下项目结构: 这最初是一个Eclipse项目,我需要在IntelliJ中导入它。 然而,每次我试图导入它时,IntelliJ都与源根文件夹完全混淆了。 查看java源文件,我在包声明中得到以下错误: 错误:包名称“com.company”与文件路径“src/com.company”不对应 和 错误:包名“com.company”与文件路径“test-src/com.company”不对应 我

  • java.lang.IllegalStateException:迁移未正确处理data_table 应为:TableInfo{name=“data_table”,columns=url=column{name=“url”,type=“text”,notnull=false,primarykeyposition=0}..... 找到:TableInfo{name='data_table',colum