詳解Java Selenium中的鍵盤(pán)控制操作
簡(jiǎn)介
本文主要簡(jiǎn)介如何使用java代碼利用Selenium 控制瀏覽器中需要用到的鍵盤(pán)操作。
鍵盤(pán)控制
webdriver 中 Keys 類(lèi)幾乎提供了鍵盤(pán)上的所有按鍵方法,我們可以使用 send_keys + Keys 實(shí)現(xiàn)輸出鍵盤(pán)上的組合按鍵如 “Ctrl + C”、“Ctrl + V” 等。
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author Lenovo
*/
public class SeleniumDemo {
private final static String webDriver = "webdriver.chrome.driver";
private final static String webDriverPath ="E:\\chromedriver\\chromedriver.exe";
public static void main(String[] args) throws InterruptedException {
System.setProperty(webDriver, webDriverPath);
WebDriver driver= new ChromeDriver();
//有道翻譯頁(yè)面
driver.get("https://fanyi.youdao.com/index.html#/");
WebElement element=driver.findElement(By.id("js_fanyi_input"));
//輸入賬戶名
element.sendKeys("admin");
// 模擬回車(chē)鍵進(jìn)行跳轉(zhuǎn)(輸入內(nèi)容后)
element.sendKeys(Keys.ENTER);
//Ctrl + A 全選輸入框中內(nèi)容
element.sendKeys(Keys.CONTROL, "A");
//Ctrl + C 復(fù)制輸入框中內(nèi)容
element.sendKeys(Keys.CONTROL, "C");
//Ctrl + V 粘貼輸入框中內(nèi)容(第一粘貼會(huì)把原來(lái)的內(nèi)容替換)
element.sendKeys(Keys.CONTROL, "V");
//Ctrl + V 粘貼輸入框中內(nèi)容
element.sendKeys(Keys.CONTROL, "V");
//Ctrl + V 粘貼輸入框中內(nèi)容
element.sendKeys(Keys.CONTROL, "V");
}
}
其他常見(jiàn)鍵盤(pán)操作:
| 操作 | 描述 |
|---|---|
| Keys.F1 | F1鍵 |
| Keys.SPACE | 空格 |
| Keys.TAB | Tab鍵 |
| Keys.ESCAPE | ESC鍵 |
| Keys.ALT | Alt鍵 |
| Keys.SHIFT | Shift鍵 |
| Keys.ARROW_DOWN | 向下箭頭 |
| Keys.ARROW_LEFT | 向左箭頭 |
| Keys.ARROW_RIGHT | 向右箭頭 |
| Keys.ARROW_UP | 向上箭頭 |
| Keys.BACK_SPACE | Backspace建 |
組合鍵使用
//組合鍵
element.sendKeys(Keys.CONTROL,Keys.SHIFT, "A");
高頻使用
//輸入文本
element.sendKeys("洛陽(yáng)泰山");
補(bǔ)充知識(shí)
鍵盤(pán)操作除了使用Selenium 控制鍵盤(pán)外還可以使用 java robot (java.awt包下)的控制鍵盤(pán)結(jié)合使用。
使用示例
通過(guò) Robot 類(lèi)實(shí)現(xiàn)發(fā)送鍵盤(pán)組合鍵
/* 發(fā)送鍵盤(pán)組合鍵,模擬"全選 Ctrl+A ->復(fù)制 Ctrl+C ->粘貼 Ctrl+V"快捷鍵功能
* 第 2 種方法: 通過(guò) Robot 類(lèi)實(shí)現(xiàn)
* */
@Parameters("baseUrl1")
@Test
public void RobotCtrlACV(String baseUrl1) throws InterruptedException, AWTException {
driver.get(baseUrl1 + "/");
WebElement inputBox = driver.findElement(By.xpath("http://*[@id=\"query\"]"));
inputBox.clear();
inputBox.sendKeys("搜狗");
Thread.sleep(2000);
// 定義一個(gè) Robot 對(duì)象
Robot robot = new Robot();
// 模擬 全選 Ctrl+A
robot.keyPress(KeyEvent.VK_CONTROL); // 按下 Ctrl 鍵
robot.keyPress(KeyEvent.VK_A); // 按下字母鍵,這里大小寫(xiě)均可
robot.keyRelease(KeyEvent.VK_A); // 釋放字母鍵,這里大小寫(xiě)均可
robot.keyRelease(KeyEvent.VK_CONTROL); // 釋放 Ctrl 鍵
// 模擬 復(fù)制 Ctrl+C
robot.keyPress(KeyEvent.VK_CONTROL); // 按下 Ctrl 鍵
robot.keyPress(KeyEvent.VK_C); // 按下字母鍵,這里大小寫(xiě)均可
robot.keyRelease(KeyEvent.VK_C); // 釋放字母鍵,這里大小寫(xiě)均可
robot.keyRelease(KeyEvent.VK_CONTROL); // 釋放 Ctrl 鍵
Thread.sleep(2000);
driver.navigate().to("http://www.baidu.com" + "/");
inputBox = driver.findElement(By.xpath("http://*[@id=\"kw\"]"));
inputBox.clear();
// 模擬 粘貼 Ctrl+V
robot.keyPress(KeyEvent.VK_CONTROL); // 按下 Ctrl 鍵
robot.keyPress(KeyEvent.VK_V); // 按下字母鍵,這里大小寫(xiě)均可
robot.keyRelease(KeyEvent.VK_V); // 釋放字母鍵,這里大小寫(xiě)均可
robot.keyRelease(KeyEvent.VK_CONTROL); // 釋放 Ctrl 鍵
Thread.sleep(2000);
}
當(dāng)然也可以通過(guò) Actions 類(lèi)實(shí)現(xiàn)
/* 發(fā)送鍵盤(pán)組合鍵,模擬"全選 Ctrl+A ->復(fù)制 Ctrl+C ->粘貼 Ctrl+V"快捷鍵功能
* 第 1 種方法: 通過(guò) Actions 類(lèi)實(shí)現(xiàn)
* */
@Parameters("baseUrl1")
@Test
public void ActionsCtrlACV(String baseUrl1) throws InterruptedException, AWTException {
driver.get(baseUrl1 + "/");
WebElement inputBox = driver.findElement(By.xpath("http://*[@id=\"query\"]"));
inputBox.clear();
inputBox.sendKeys("搜狗");
Thread.sleep(2000);
// 定義一個(gè) Actions 對(duì)象
Actions action = new Actions(driver);
// 模擬 全選 Ctrl+A
action.keyDown(Keys.CONTROL); // 按下 Ctrl 鍵
action.sendKeys(Keys.chord("A")); // 按下字母鍵,這里大小寫(xiě)均可
action.keyUp(Keys.CONTROL); // 釋放 Ctrl 鍵
// 模擬 復(fù)制 Ctrl+C
action.keyDown(Keys.CONTROL); // 按下 Ctrl 鍵
action.sendKeys(Keys.chord("c")); // 按下字母鍵,這里大小寫(xiě)均可
action.keyUp(Keys.CONTROL); // 釋放 Ctrl 鍵
// 這一步,必不可少,作用是使得以上組合鍵生效
action.build().perform();
Thread.sleep(2000);
driver.navigate().to("http://www.baidu.com" + "/");
inputBox = driver.findElement(By.xpath("http://*[@id=\"kw\"]"));
inputBox.clear();
// 模擬 粘貼 Ctrl+V
action.keyDown(Keys.CONTROL); // 按下 Ctrl 鍵
action.sendKeys(Keys.chord("v")); // 按下字母鍵,這里大小寫(xiě)均可
action.keyUp(Keys.CONTROL); // 釋放 Ctrl 鍵
// 這一步,必不可少,作用是使得以上組合鍵生效
action.build().perform();
Thread.sleep(2000);
}
到此這篇關(guān)于詳解Java Selenium中的鍵盤(pán)控制操作的文章就介紹到這了,更多相關(guān)Java Selenium鍵盤(pán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)上傳和下載工具類(lèi)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)上傳和下載工具類(lèi),文件上傳到ftp服務(wù)工具類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
SpringBoot實(shí)現(xiàn)阿里云快遞物流查詢的示例代碼
本文將基于springboot實(shí)現(xiàn)快遞物流查詢,物流信息的獲取通過(guò)阿里云第三方實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2021-10-10
MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級(jí)緩存的問(wèn)題
Mybatis內(nèi)置的二級(jí)緩存在分布式環(huán)境下存在分布式問(wèn)題,無(wú)法使用,但是我們可以整合Redis來(lái)實(shí)現(xiàn)分布式的二級(jí)緩存,這篇文章給大家介紹MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級(jí)緩存,感興趣的朋友跟隨小編一起看看吧2023-11-11
Java使用異或運(yùn)算實(shí)現(xiàn)簡(jiǎn)單的加密解密算法實(shí)例代碼
這篇文章主要介紹了Java使用異或運(yùn)算實(shí)現(xiàn)簡(jiǎn)單的加密解密算法實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
mybatis使用foreach查詢不出結(jié)果也不報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了mybatis使用foreach查詢不出結(jié)果也不報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)
下面小編就為大家?guī)?lái)一篇使用JPA中@Query 注解實(shí)現(xiàn)update 操作方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
JAVA中string數(shù)據(jù)類(lèi)型轉(zhuǎn)換詳解
在JAVA中string是final類(lèi),提供字符串不可以修改,string類(lèi)型在項(xiàng)目中經(jīng)常使用,下面給大家介紹了string七種數(shù)據(jù)類(lèi)型轉(zhuǎn)換,需要的朋友可以參考下2015-07-07

