用于IE9的Selenium WebDriver DragAndDrop

时间:2013-01-13 00:23:21

标签: internet-explorer drag-and-drop webdriver

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

本地电话

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

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

任何指针都会有所帮助。

2 个答案:

答案 0 :(得分:1)

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

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

如果仍然无效,请提供更多关于硒错误和网页的具体细节。

答案 1 :(得分:0)

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