我的项目包括Selenium
Webdriver,JAVA,Maven,TestNG,Jenkins,Allure(报告)。我有几套包含100多个测试用例的测试,并通过3种不同的浏览器进行了迭代(测试使用TestNG并行运行)。
除非我实际上正在观察窗口并查看测试运行,否则无法通过一项测试。
我将解释: 我要测试什么? 我们的JS开发人员创建了一项功能,仅当用户将焦点放在窗口上时,图像幻灯片才会开始移动和更改图像。
在Firefox和Chrome上,测试顺利通过-
我不需要查看测试。焦点可以放在其他选项卡或浏览器上,驱动程序将模拟所有内容。在IEdriver上,它不是那样的!
我试图为驱动程序添加许多功能,但仍然一无所获(其中一些解决了我一些其他问题):
}else if (browser.equalsIgnoreCase("ie")) {
String exeServiceIEdriver = Consts.ieDriverPath;
System.setProperty("webdriver.ie.driver", exeServiceIEdriver);
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability("nativeEvents", false);
ieCapabilities.setCapability("unexpectedAlertBehaviour", "accept");
ieCapabilities.setCapability("ignoreProtectedModeSettings", true);
ieCapabilities.setCapability("disable-popup-blocking", true);
ieCapabilities.setCapability("enablePersistentHover", true);
ieCapabilities.setCapability("ignoreZoomSetting", true);
//ieCapabilities.setCapability("version", "12"); does it work?? don't think so..
ieCapabilities.setCapability("requireWindowFocus", true);
//ieCapabilities.setCapability("browser_version", "9.0"); // Does NOT work. need user agent
ieCapabilities.setCapability("IE_ENSURE_CLEAN_SESSION", true); // Does NOT work. need user agent
ieCapabilities.setCapability("browserAttachTimeout",5000);
ieCapabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS,true);
ieCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);
ieCapabilities.setCapability(CapabilityType.SUPPORTS_APPLICATION_CACHE,false);
driver = new InternetExplorerDriver(ieCapabilities);
Log.info("\n*** Starting IE Browser ***");
您似乎已选择添加所有 InternetExplorerDriver
相关功能。
Focus`**](https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#browser-
focus)
挑战在于,如果窗口本身没有焦点,则IE本身似乎并不完全尊重我们发送到IE浏览器窗口(
WM_MOUSEDOWN
和WM_MOUSEUP
)的Windows消息。具体来说,被单击的元素将在其周围收到一个焦点窗口,但单击不会被该元素处理。可以说,我们根本不应该发送消息。相反,我们应该使用SendInput()
API,但是该API明确要求窗口具有焦点。
WebDriver 项目有两个相互矛盾的目标。因此,首先,我们努力尽可能模拟用户。这意味着使用本机事件,而不是使用 JavaScript 模拟事件。
第二,我们不希望浏览器窗口自动聚焦。这意味着仅将浏览器窗口强制为前台是次优的。
另一个考虑因素是在多个 WebDriver 实例下运行多个IE实例的可能性,这意味着任何此类
bring the window to the foreground
解决方案都必须包装在mutex
IE驱动程序的C
++代码内的某种同步构造(可能是)中。即使这样,例如,如果用户在将IE置于前台并执行本机事件的驱动程序之间将另一个窗口置于前台,则此代码仍将受到竞争条件的影响。围绕驾驶员要求以及如何确定这两个相互矛盾的目标的优先级的讨论正在进行中。当前流行的观点是优先考虑前者,并证明使用IE驱动程序时您的计算机将无法执行其他任务。但是,该决定远未最终确定,实现该决定的代码可能相当复杂。
作为临时解决方案,您可以添加以下功能:
ieCapabilities.setCapability("requireWindowFocus", false);
尝试合并多个 Kafka 流,聚合
我有一个,它是由一个kafka主题创建的,并且指定了属性。 当我试图创建一个时,会话窗口化了一个查询,如下所示: 我总是得到错误: KSQL不支持对窗口表的持久查询 如何在KSQL中创建开始会话窗口的事件的?
下面是一些示例代码: 这是我希望看到的输出:
问题内容: 我正在遵循上的示例,但无法在出现的窗口中成功显示字符串。尺寸和标题设置正确,并显示窗口。如果我在控制台上使用paint()方法输出一个字符串,我会看到它实际上被调用了几次,但是该字符串没有出现在我的应用程序窗口中。我看不到与示例有何不同;我实际上少了一些代码(他们添加了鼠标侦听器和按键侦听器):\ 问题答案: 您遇到的问题是您直接在框架顶部绘画。框架还包括框架边框,因此位置0、0(或者
我正试图打开一个弹出身份验证对话框的ftp页面。我正在使用Robot类的Keypress事件输入身份验证细节。但是在这里,如果焦点不在那个弹出窗口上,那么它在另一个处于焦点中的窗口中键入身份验证详细信息。由于这个弹出窗口不是web元素,我不能使用driver.switchto().window(),因为这里我需要传递windowhandle,我没有得到它。如果我可以点击驱动程序窗口,我的焦点将转移
我正在寻找一些关于渲染子窗口的信息,特别是关于OpenGL如何与GDI互操作的信息。我的问题是,我基本上有两个窗口,首先,主窗口是在qt中创建的,而在qt内部,子窗口是利用OpenGL渲染器托管的。 现在我想做的是在我的OpenGL窗口顶部托管一个覆盖,所以我用它来覆盖OpenGL窗口。我遇到的问题是,当我使用OpenGL渲染时,OpenGL生成的图形似乎模糊了图形区域,包括并有效地撤消了由qt合