個人對webdriver的理解(十二)

測試工具webdriver的使用過程中,應該會用到使用工具來模擬用的鼠標、鍵盤的一些輸入操作,比如說:
1、鼠標的左鍵點擊、雙擊、拖拽、右鍵點擊等;
2、鍵盤的回車、回退、空格、ctrl、alt、shift等;

在webdriver中,有專門的一個類,是用來進行鼠標、鍵盤的模擬操作的,那就是Actions類,該類使用時,又會涉及到Keyboard、Mouse、CompositeAction(複合動作),先對Mouse的方法做簡單羅列,然後再用代碼說明:
1、鼠標左鍵點擊:
Actions action = new Actions(driver);
action.click(driver.findElement(By.xpath(xpath)));
左鍵點擊是普通常用的方法,前面已經介紹過一種更簡單的方法:
Driver driver=new Driver();
driver.findElement(By.xpath(xpath)).click();

2、鼠標左鍵雙擊:
Actions action = new Actions(driver);
action.doubleClick(driver.findElement(By.xpath(xpath)));

3、鼠標左鍵按下操作:
Actions action = new Actions(driver);
action.clickAndHold(driver.findElemen(By.xpath(xpath)));

4、鼠標左鍵移動到元素操作:
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath(xpath)));

5、鼠標右鍵點擊操作:
Actions action = new Actions(driver) ;
action.contextClick(driver.findElement(By.xpath(xpath)));

6、組合的鼠標操作(將目標元素拖拽到指定的元素上):
Actions action = new Actions(driver);
action.dragAndDrop(driver.findElement(By.xpath(xpath)),driver.findElement(By.xpath(xpath)));

7、組合的鼠標操作(將目標元素拖拽到指定的元素上):
Actions action = new Actions(driver);
action.dragAndDrop(driver.findElement(By.xpath(xpath)),xOffset,yOffset);

代碼演示:
driver.get("http://www.baidu.com");
driver.findElement(By.name("wd")).sendKeys("林丹");

//點擊操作
driver.findElement(by.id("su")).click();
driver.navigate().back();
Actions action=new Actions(driver);
action.click(driver.findElement(by.id("su")));

//雙擊操作(略)

//拖拽選擇操作,鼠標按住不放,進行拖拽選擇,然後釋放鼠標,需要三個動作
action.clickAndHold(driver.findElement(By.id("1"))).moveToElement(driver.findElement(By.id("3"))).perform();
action.release();

//拖拽元素,將一個元素拖拽到另一個元素上,然後釋放鼠標(略)

鍵盤的模擬操作,包括普通按鍵,比如enter、backspace、tab等,還包括四個修飾鍵(Modifier Keys),分別是Caps Lock,Control,Option,Command。
普通按鍵使用時,直接使用sendkeys(theKeys)就可以,如按下enter鍵:
action.sendKeys(Keys.ENTER).perform();

修飾鍵一般使用時,是和別的按鍵配合使用的,比如快捷鍵ctrl+F4,這時就得使用keyDown(theKeys)、keyUp(theKeys)來操作,代碼如下:
driver.get("http://www.baidu.com");
driver.findElement(by.name("wd")).sendKeys("林丹");
Actions action=new Actions(driver);
//輸入框中輸入內容,然後點擊回車進行百度
action.sendKeys(Keys.ENTER).perform();
//使用快捷鍵alt+f4關閉窗口(但是該方法不穩定,時行時不行,不行居多)
action.keyDown(keys.ATL).keyDown(keys.F4).keyUp(keys.ALT).perform();
//使用ctrl+a全選
driver.findElement(By.id("kw")).click();
action.sendKeys(Keys.CONTROL+"a").perform();

Tips:
1、拖拽選擇時,使用clickAndHold和moveToElement時,會受到鼠標所在位置的影響,所以儘量是兩個方法一起使用;
2、拖拽元素時,dragAndDrop方法,我沒有找到實現的場景,所以沒有寫代碼試驗;
3、直接按下普通按鍵時,直接使用sendkeys(theKeys)方法就能夠實現;
4、需要使用修飾鍵時,需要連貫動作中應該使用keydown和keyup方法;
action.keyDown(keys.ATL).sendKeys(keys.F4).keyUp(keys.ALT).perform();//這是不能實現alt+f4關閉窗口的效果的,只能實現單獨按f4的效果
5、對於一些快捷鍵,如ctrl+a,可以直接sendkeys(Keys.CONTROL+"a")。

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