我正在寻找一种解决方法来将 div 拖放到 IE 中的另一个上。
本机调用
(new Actions(TestSetup.webDriver)).dragAndDrop(sourceElement,destinationElement).perform();
适用于 Chrome 和 Firefox,但在 IE 中失败。
任何指针都会有所帮助。
我正在寻找一种解决方法来将 div 拖放到 IE 中的另一个上。
本机调用
(new Actions(TestSetup.webDriver)).dragAndDrop(sourceElement,destinationElement).perform();
适用于 Chrome 和 Firefox,但在 IE 中失败。
任何指针都会有所帮助。
不确定这是否已解决,但您可能需要执行单独的鼠标单击和移动操作,而无需从 Selenium 拖放。从理论上讲,它应该是同一件事,但可能存在这样一种情况,即当您持有一个元素并且硒没有找到另一个元素时,一个元素处于焦点并被拖动。
我建议获取两个元素并保存位置,然后单击并按住一个元素,然后将其移动到另一个元素的位置,然后在该位置释放鼠标。这应该绕过任何特定于浏览器的问题,并且只关注鼠标和逐个像素的窗口。
如果这仍然不起作用,请为硒错误和网页提供更具体的详细信息。
初始化 IE 驱动程序时,将RequireWindowFocus
选项设置为 true。
这就是它在 C# 中的实现方式:
var ieOptions = new InternetExplorerOptions
{
RequireWindowFocus = true
}
var driver = new InternetExplorerDriver(ieOptions);
如果使用远程 Selenium 服务器:
DesiredCapabilities capabilities = DesiredCapabilities.InternetExplorer();
capabilities.SetCapability("requireWindowFocus", true);
var driver = new RemoteWebDriver(Constants.RemoteSeleniumServer, capabilities);
根据文档:
在 IE 驱动程序中引入了“requireWindowFocus”功能。当与“nativeEvents”功能结合使用时,驱动程序将在执行鼠标或键盘事件之前尝试将当前 IE 窗口置于前台。
此外,当 requireWindowFocus 功能设置为 true 时,高级用户交互现在将使用 Windows SendInput() API 来执行交互。要启用此行为,请在创建 IE 驱动程序实例时将 requiresWindowFocus 功能的值设置为“true”。此新功能的默认值为“false”。此功能目前被认为是非常实验性的;使用风险自负。