selenium中鍵盤模擬操作
對於鍵盤的模擬操作,也是使用Actions類,使用類中的 keyUp(Key)、keyDown(Key)、sendKeys(key) 等方法來實現。鍵盤的操作有普通鍵盤和修飾鍵盤兩種 :
1. 普通鍵盤模擬
對於普通鍵盤,使用 sendKeys(key) 就可以實現,比如數字鍵、tab、空格等。
Actions action = new Actions(driver);
action.sendKeys(Keys.TAB). sendKeys(keys.NULL); //模擬按下TAB 鍵
action.sendKeys(Keys.SPACE). sendKeys(keys.NULL); //模擬按下空格鍵
Actions中的sendKeys(key)對於按鍵的呼叫並不會釋放,應該再呼叫 sendKeys(keys.NULL) 來釋放按鍵。
2. 修飾鍵
對於修飾鍵,使用KeyDown(Key)、keyUp(Key)來實現,一般都是跟普通鍵組合使用的。比如Alt+F4、Ctrl+Alt+a等等。
Actions action = new Actions(driver);
action.keyDown(Keys.CONTROL); //按下 Ctrl 鍵
action.keyUp(Keys.CONTROL); //釋放 Ctrl 鍵
使用快捷鍵Ctrl+Alt+a,可以通過下面語句來實現:
action.keyDown(Keys.CONTROL).keyDown(Keys.ALT).sendKeys(“a”).keyUp(Keys.CONTROL).keyUp(Keys.ALT).perform();
對於keyDown(Key)方法的呼叫,如果沒有接著呼叫keyUp(Key)或者sendKeys(Keys.NULL) 來釋放的話,這個按鍵將也一樣保持按住狀態,KeyDown(Key)、KeyUp(Keys) 方法的引數只能傳修飾鍵, 否者將丟擲IllegalArgumentException異常。
3.特殊按鍵操作
在WebDriver中,還有一些不常用到的功能鍵如 PrtSc、ScrLk/NmLk。而對於一些功能組合鍵,如Alt+PrtSC來抓取當前螢幕,通過 WebDriver 的 Keys 是沒辦法操作的。這個時候我們就需要用到 Java 的 Robot 類來實現對這類組合鍵的操作了。
Robot robot = new Robot();
robot.keyPress(java.awt.event.KeyEvent.VK_ALT); //模擬按下ALT鍵
robot.keyPress(java.awt.event.KeyEvent.VK_PRINTSCREEN); //模擬按下PrtSC鍵
robot.keyRelease(java.awt.event.KeyEvent.VK_ALT); //釋放按鍵