詳解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")); //輸入賬戶(hù)名 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利用pdfbox+poi往pdf插入數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于java利用pdfbox+poi如何往pdf插入數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02SpringBoot?項(xiàng)目中創(chuàng)建線(xiàn)程池
這篇文章主要介紹了SpringBoot?項(xiàng)目中創(chuàng)建線(xiàn)程池,文章基于Spring?Boot項(xiàng)目創(chuàng)建線(xiàn)程池ThreadPoolExecutor,需要的小伙伴可以參考一下2022-04-04springmvc后臺(tái)基于@ModelAttribute獲取表單提交的數(shù)據(jù)
這篇文章主要介紹了springmvc后臺(tái)基于@ModelAttribute獲取表單提交的數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例
這篇文章主要介紹了Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例的相關(guān)資料,需要的朋友可以參考下2017-07-07Spring中的攔截器HandlerInterceptor詳細(xì)解析
這篇文章主要介紹了Spring中的攔截器HandlerInterceptor詳細(xì)解析,HandlerInterceptor 是 Spring 框架提供的一個(gè)攔截器接口,用于在請(qǐng)求處理過(guò)程中攔截和處理請(qǐng)求,需要的朋友可以參考下2024-01-01spring整合redis緩存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用
本篇文章主要介紹了spring整合redis緩存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04socket編程時(shí)的發(fā)送與接收數(shù)據(jù)時(shí)的問(wèn)題解析
這篇文章主要為大家介紹了socket編程時(shí)的發(fā)送與接收數(shù)據(jù)時(shí)的問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Springboot如何利用攔截器攔截請(qǐng)求信息收集到日志詳解
一些系統(tǒng)經(jīng)常需要關(guān)注用戶(hù)請(qǐng)求的具體信息,如用戶(hù)信息、請(qǐng)求參數(shù)、響應(yīng)結(jié)果等等,在SpringBoot應(yīng)用中可通過(guò)攔截器的方式統(tǒng)一處理,下面這篇文章主要給大家介紹了關(guān)于Springboot如何利用攔截器攔截請(qǐng)求信息收集到日志的相關(guān)資料,需要的朋友可以參考下2021-08-08