2013-01-13 62 views
-1

我正在尋找一種解決方法,在IE中將另一個div拖放到另一個上。Selenium WebDriver IE9的DragAndDrop

的本地調用

(新的行動(TestSetup.webDriver))dragAndDrop(sourceElement,destinationElement).perform()。

適用於Chrome和Firefox,但在IE中失敗。

任何指針都會有幫助。

+0

哈哈,我相信這是瀏覽器的權利?但業務仍然希望在IE上完成。 – user262102

+0

我很抱歉,我做了大拇指並添加了評論,但直到現在我還不知道如何接受答案。我現在已經接受了以前的答案。但我很感激你的幫助。 – user262102

回答

1

不知道這是否已解決,但您可能需要執行單獨的鼠標單擊並移動操作,而無需從Selenium拖放。理論上它應該是同樣的東西,但可能會出現這樣的情況,即當你有一個元素被保存,並且硒在另一個元素被關注並被拖拽時沒有找到另一個元素。

我會建議獲取這兩個元素並保存位置,然後單擊並保存一個元素,然後將其移動到其他元素的位置,然後在該位置釋放鼠標。這應該繞過任何瀏覽器的具體問題,並只關注鼠標和逐個像素的窗口。

如果仍然不起作用,請提供更多具體細節到硒錯誤和網頁。

0

初始化您的IE驅動程序時,請將RequireWindowFocus選項設置爲true。

這是它是如何在C#中完成:

var ieOptions = new InternetExplorerOptions 
{ 
    RequireWindowFocus = true 
} 
var driver = new InternetExplorerDriver(ieOptions); 

如果使用的是遠程硒服務器:

DesiredCapabilities capabilities = DesiredCapabilities.InternetExplorer(); 
capabilities.SetCapability("requireWindowFocus", true); 
var driver = new RemoteWebDriver(Constants.RemoteSeleniumServer, capabilities); 

根據文檔:

推出了 「requireWindowFocus」 能力進入IE驅動程序。當與「nativeEvents」功能結合使用時,驅動程序將嘗試在執行鼠標或鍵盤事件之前將當前IE窗口置於前臺。

此外,當requireWindowFocus功能設置爲true時,高級用戶交互現在將使用Windows SendInput()API執行交互。要啓用此行爲,請在創建IE驅動程序實例時將requireWindowFocus功能的值設置爲「true」。此新功能的默認值爲「false」。該功能目前被認爲是極其實驗性的;使用需要您自擔風險。