1. 程式人生 > >selenium中鍵盤模擬操作

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);  //釋放按鍵