selenium webdriver模擬鼠標鍵盤

在測試使用Selenium webdriver測試WEB系統的時候,用到了模擬鼠標、鍵盤的一些輸入操做。html

一、鼠標的左鍵點擊、雙擊、拖拽、右鍵點擊等;web

二、鍵盤的回車、回退、空格、ctrl、alt、shift等;測試

在webdriver中,有專門的一個類,是用來進行鼠標、鍵盤模擬操做的,那就是Actions類,該類使用時,又會涉及到Keyboard、Mouse、CompositeAction(複合動做),先對Mouse的方法作簡單羅列,而後再用代碼說明:spa

一、鼠標左鍵點擊:orm

Actions action = new Actions(driver);htm

action.click(driver.findElement(By.by);blog

左鍵點擊是普一般用的方法,前面已經介紹過一種更簡單的方法:ip

Driverdriver=new Driver();get

driver.findElement(By.xpath(xpath)).click();it

 

二、鼠標左鍵雙擊:

Actionsaction = new Actions(driver);

action.doubleClick(driver.findElement(By.xpath(xpath)));

 

三、鼠標左鍵按下操做:

Actionsaction = new Actions(driver);

action.clickAndHold(driver.findElemen(By.xpath(xpath)));

 

四、鼠標左鍵移動到元素操做:

Actionsaction = new Actions(driver);

action.moveToElement(driver.findElement(By.xpath(xpath)));

 

五、鼠標右鍵點擊操做:

Actionsaction = new Actions(driver) ;

action.contextClick(driver.findElement(By.xpath(xpath)));

 

六、組合的鼠標操做(將目標元素拖拽到指定的元素上):

Actionsaction = new Actions(driver);

action.dragAndDrop(driver.findElement(By.xpath(xpath)),driver.findElement(By.xpath(xpath)));

 

七、組合的鼠標操做(將目標元素拖拽到指定的元素上):

Actionsaction = 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();

Actionsaction=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("林丹");

Actionsaction=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();

 

轉自:https://www.cnblogs.com/111testing/p/6152834.html

 

Tips:

一、拖拽選擇時,使用clickAndHold和moveToElement時,會受到鼠標所在位置的影響,因此儘可能是兩個方法一塊兒使用;

二、拖拽元素時,dragAndDrop方法,我沒有找到實現的場景,因此沒有寫代碼試驗;

三、直接按下普通按鍵時,直接使用sendkeys(theKeys)方法就可以實現;

四、須要使用修飾鍵時,須要連貫動做中應該使用keydown和keyup方法;

action.keyDown(keys.ATL).sendKeys(keys.F4).keyUp(keys.ALT).perform();//這是不能實現alt+f4關閉窗口的效果的,只能實現單獨按f4的效果

五、對於一些快捷鍵,如ctrl+a,能夠直接sendkeys(Keys.CONTROL+"a")。

相關文章
相關標籤/搜索