-1

我正在寻找一种解决方法来将 div 拖放到 IE 中的另一个上。

本机调用

(new Actions(TestSetup.webDriver)).dragAndDrop(sourceElement,destinationElement).perform();

适用于 Chrome 和 Firefox,但在 IE 中失败。

任何指针都会有所帮助。

4

2 回答 2

1

不确定这是否已解决,但您可能需要执行单独的鼠标单击和移动操作,而无需从 Selenium 拖放。从理论上讲,它应该是同一件事,但可能存在这样一种情况,即当您持有一个元素并且硒没有找到另一个元素时,一个元素处于焦点并被拖动。

我建议获取两个元素并保存位置,然后单击并按住一个元素,然后将其移动到另一个元素的位置,然后在该位置释放鼠标。这应该绕过任何特定于浏览器的问题,并且只关注鼠标和逐个像素的窗口。

如果这仍然不起作用,请为硒错误和网页提供更具体的详细信息。

于 2014-06-25T11:22:02.277 回答
1

初始化 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”。此功能目前被认为是非常实验性的;使用风险自负。

于 2016-08-10T19:14:37.393 回答