selenium模擬鼠標鍵盤(一)

鼠標點擊操作

鼠標點擊事件有以下幾種類型:

//記得最後一定要調用perform,否則click並沒有真正執行

清單 1. 鼠標左鍵點擊

Actions action = new Actions(dr);action.click();// 鼠標左鍵在當前停留的位置做單擊操作 
action.click(dr.findElement(element)).perform();;// 鼠標左鍵點擊指定的元素

清單 2. 鼠標右鍵點擊
Actions action = new Actions(dr);
action.contextClick(dr.findElement(element)).perform();// 鼠標右鍵點擊指定的元素

清單 3. 鼠標雙擊操作
Actions action = new Actions(dr); 
action.doubleClick();// 鼠標在當前停留的位置做雙擊操作 
action.doubleClick(dr.findElement(element).perform();// 鼠標雙擊指定的元素

清單 4.鼠標拖拽動作(可以用來測試鼠標是否手型顯示)

Actions action = new Actions(dr);
WebElement source = dr.findElement(element);
WebElement target = dr.findElement(element));
// 鼠標拖拽動作,將 source 元素拖放到 target 元素的位置。
action.dragAndDrop(source, target);
action.clickAndHold(source).moveToElement(target).perform();
action.release();

清單 5. 鼠標懸停操作(可以測試鼠標放到超鏈接或者按鈕上字體顏色發生變化,及頁面左下角顯示超鏈接地址)
Actions action = new Actions(dr); 
action.clickAndHold();// 鼠標懸停在當前位置,既點擊並且不釋放
action.clickAndHold(onElement);// 鼠標懸停在 onElement 元素的位置
action.clickAndHold(onElement).perform(); //這個方法實際上是執行了兩個動作,首先是鼠標移動到元素 onElement,然後再 clickAndHold, 所以這個方法也可以寫成 action.moveToElement(onElement).clickAndHold()。

清單 6.鼠標釋放操

Actions action = new Actions(driver);

action.release();//釋放鼠標

鍵盤模擬操作

Actions action = new Actions(driver);

WebElement element = dr.findElement(By.id("kw"));

action.keyUp(element,Keys.SHIFT).sendKeys("222",Keys.ENTER).keyDown(Keys.SHIFT).perform();
Assert.assertTrue(element.getAttribute("value").contains("@@@"));

keyDown表示按下鍵盤,keyUp表示鬆開鍵盤。上述代碼中先是執行keyDown,這時shift鍵按下後面的sendKeys內容也是在shift鍵按下的情況輸入的,所以實際輸入的是@@@

清單 8. 驗證焦點顯示

Actions sendKeys(keysToSend)執行完之後,焦點就不在當前元素了。所以我們可以使用sendKeys(Keys.TAB)來切換元素的焦點,從而達到選擇元素的作用,這個最常用到的場景就是在用戶名和密碼的輸入過程中。

element.sendKeys("dddd",Keys.TAB);

清單 9.修飾鍵方法 KeyDown(theKey)keyUp(theKey)

 Actions action = new Actions(driver);

 action.keyDown(Keys.CONTROL);// 按下 Ctrl

 action.keyDown(Keys.SHIFT);// 按下 Shift

 action.keyDown(Key.ALT);// 按下 Alt

 action.keyUp(Keys.CONTROL);// 釋放 Ctrl

 action.keyUp(Keys.SHIFT);// 釋放 Shift

 action.keyUp(Keys.ALT);// 釋放 Alt

所以要通過 Alt+F4來關閉當前的活動窗口,可以通過下面語句來實現:action.keyDown(Keys.ALT).keyDown(Keys.F4).keyUp(Keys.ALT).perform();

而如果是對於像鍵盤上面的字母鍵 a,b,c,d...等的組合使用,可以通過以下語句實現:action.keyDown(Keys.CONTROL).sednKeys(“a”).perform();


清單 10.批量上傳文件

 /**

 *

 * @Description:在百度雲上測試文件批量上傳功能,主要是通過循環的方式去做單一

 *的上傳動作 , 登陸過程已經去掉

 */

 @Test

 public void test_mutilUploadFile() throwsException {

 System.out.println("upload start");

//獲取上傳控件元素

 WebElement uploadButton =driver.findElement(By.name("html5uploader"));

 //構建上傳文件路徑,將需要上傳的文件添加到 CharSequence數組

 CharSequence[] files = new CharSequence[5];

files[0] ="C:\\test\\test1.txt";

files[1] = "C:\\test\\test2.txt";

files[2] ="C:\\test\\test3.txt";

files[3] ="C:\\test\\test4.txt";

files[4] ="C:\\test\\test5.txt";

//循環列出每支需要上傳的文件路徑,做單一上傳動作

for(CharSequencefile: files){

      uploadButton.sendKeys(file);

}

Thread.sleep(2000);

 System.out.println("upload end");

}

當執行結束後,效果如圖 1

1.批量上傳文件

結束語

SeleniumWebDriver中,有了 Actions類和 Keys 枚舉對鍵盤和鼠標的操作已經做的非常到位,再結合 Java本身 RobotKeyEvent等類的使用,基本上可以滿足工作中遇到的對鼠標鍵盤操作的應用了。

其次要注意的地方是 WebDriver對瀏覽器的支持問題,Selenium WebDriver支持的瀏覽器非常廣泛,從 IEFirefoxChrome Safari 等瀏覽器, WebDriver 都有相對應的實現:InterntExplorerDriverFirefoxDriverChromeDriverSafariDriverAndroidDriver IPhoneDriverHtmlUnitDriver等。根據個人的經驗,Firefox以及 Chrome 瀏覽器對 WebDriver 的支持最好了,Firefox 搭上 Firebug 以及 Firepath, 在寫腳本的過程中非常方便,而 ChromeDriver Google 公司自己支持與維護的項目。HtmlUnitDriver速度最快,一個純 Java實現的瀏覽器。IE 比較慢,而且對於 Xpath 等支持不是很好。更多關於 SeleniumWebDriver的知識,大家可以從下面的鏈接去訪問 Selenium官方文檔。

js滾動

JavascriptExecutor JS=(JavascriptExecutor) driver;

Stringhigh="scroll(0,10000);";

JS.executeScript(high);

模仿鍵盤複製粘貼

Actions action = new Actions(dr); 
dr.findElement(By.id("kw")).sendKeys("das1111111111",Keys.ENTER);
Thread.sleep(3000);
dr.findElement(By.id("kw")).click();
action.sendKeys(Keys.CONTROL+"a").perform();
Thread.sleep(3000);
action.sendKeys(Keys.CONTROL+"c").perform();
Thread.sleep(3000);
action.sendKeys(Keys.CONTROL+"v").perform();

不知道爲什麼把我的代碼複製到文本框?合適讓我無語呢。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章