2012-11-09 27 views
4

我使用webdriver的Action執行某些鍵的組合後,鬆開按鍵:的webdriver - 爪哇 - 如何執行行動

new Actions(getWebDriver()).sendKeys(Keys.CONTROL, ..).perform(); 

我的問題是執行的操作後Keys.CONTROL保持激活。經過一些新的點擊後,我的瀏覽器上出現了新的打開的選項卡,並且由於密鑰仍處於激活狀態而出現了奇怪的行爲。如何釋放密鑰?謝謝。

回答

1

建立一系列的動作,然後執行它們。的如何釋放控制鍵的有用示範是去除附加杆通過模擬控制+/按鍵隨後發送keyUp消息以釋放所保持的控制鍵:

WebDriver driver = getDriver(); 
String handle = driver.getWindowHandle(); 

// Remove the "add-on" bar. 
driver.switchTo().defaultContent(); 
Actions actions = new Actions(driver); 
actions 
    .sendKeys(Keys.CONTROL, Keys.DIVIDE) 
    .keyUp(Keys.CONTROL) 
    .build() 
    .perform(); 

// Return back to whatever window was first selected. 
driver.switchTo().window(handle); 
0

嘗試使用Keys.chord()。按照documentation

模擬在「和絃」中一次按下多個按鍵。採用Keys.XXXX或字符串的序列號 ;將每個值附加到一個字符串,並添加和絃終止鍵(Keys.NULL)並返回結果 字符串。注意:當底層webdriver密鑰處理程序通過keyup事件看到Keys.NULL, 活動修改鍵(CTRL/ALT/SHIFT/etc)時,釋放。

因此,使用和絃自動附加的Keys.NULL應釋放控件。

解決方案

new Actions(getWebDriver()).sendKeys(Keys.chord(Keys.CONTROL, ...)).perform(); 
0

對我來說只有這樣的解決方法幫助:

new Actions(selenium).sendKeys(Keys.ESCAPE).perform();