title: “Keyboard”
weight: 10
Keyboard代表一个键盘事件. Keyboard操作通过使用底层接口允许我们向web浏览器提供虚拟设备输入.
sendKeys
即使遇到修饰符键序列, sendKeys也会在DOM元素中键入键序列.
这里 是WebDriver能够支持的键位列表.
{{< code-tab >}}
{{< code-panel language=“java” >}}
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class HelloSelenium {
public static void main(String args) {
WebDriver driver = new FirefoxDriver();
try {
// Navigate to Url
driver.get(“https://google.com”);
// Enter text "q" and perform keyboard action "Enter"
driver.findElement(By.name("q")).sendKeys("q" + Keys.ENTER);
} finally {
driver.quit();
}
}
}
{{< / code-panel >}}
{{< code-panel language=“python” >}}
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
Navigate to url
driver.get(“http://www.google.com”)
Enter “webdriver” text and perform “ENTER” keyboard action
driver.find_element(By.NAME, “q”).send_keys(“webdriver” + Keys.ENTER)
{{< / code-panel >}}
{{< code-panel language=“csharp” >}}
using (var driver = new FirefoxDriver())
{
// Navigate to Url
driver.Navigate().GoToUrl(“https://google.com”);
// Enter “webdriver” text and perform “ENTER” keyboard action
driver.FindElement(By.Name(“q”)).SendKeys(“webdriver” + Keys.Enter);
}
{{< / code-panel >}}
{{< code-panel language=“ruby” >}}
require ‘selenium-webdriver’
driver = Selenium::WebDriver.for :firefox
begin
Navigate to URL
driver.get ‘https://google.com’
Enter “webdriver” text and perform “ENTER” keyboard action
driver.find_element(name: ‘q’).send_keys ‘webdriver’, :return
ensure
driver.quit
end
{{< / code-panel >}}
{{< code-panel language=“javascript” >}}
const {Builder, By, Key} = require(‘selenium-webdriver’);
(async function example() {
let driver = await new Builder().forBrowser(‘firefox’).build();
try {
// Navigate to Url
await driver.get(‘https://www.google.com’);
// Enter text "webdriver" and perform keyboard action "Enter"
await driver.findElement(By.name('q')).sendKeys('webdriver', Key.ENTER);
}
finally {
await driver.quit();
}
})();
{{< / code-panel >}}
{{< code-panel language=“kotlin” >}}
import org.openqa.selenium.By
import org.openqa.selenium.Keys
import org.openqa.selenium.firefox.FirefoxDriver
fun main() {
val driver = FirefoxDriver()
try {
// Navigate to Url
driver.get(“https://google.com”)
// Enter text "q" and perform keyboard action "Enter"
driver.findElement(By.name("q")).sendKeys("q" + Keys.ENTER)
} finally {
driver.quit()
}
}
{{< / code-panel >}}
{{< / code-tab >}}
keyDown
keyDown用于模拟按下辅助按键(CONTROL, SHIFT, ALT)的动作.
{{< code-tab >}}
{{< code-panel language=“java” >}}
WebDriver driver = new ChromeDriver();
try {
// Navigate to Url
driver.get(“https://google.com”);
// Enter “webdriver” text and perform “ENTER” keyboard action
driver.findElement(By.name(“q”)).sendKeys(“webdriver” + Keys.ENTER);
Actions actionProvider = new Actions(driver);
Action keydown = actionProvider.keyDown(Keys.CONTROL).sendKeys(“a”).build();
keydown.perform();
} finally {
driver.quit();
}
{{< / code-panel >}}
{{< code-panel language=“python” >}}
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
Navigate to url
driver.get(“http://www.google.com”)
Enter “webdriver” text and perform “ENTER” keyboard action
driver.find_element(By.NAME, “q”).send_keys(“webdriver” + Keys.ENTER)
Perform action ctrl + A (modifier CONTROL + Alphabet A) to select the page
webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys(“a”).perform()
{{< / code-panel >}}
{{< code-panel language=“csharp” >}}
IWebDriver driver = new ChromeDriver();
try
{
// Navigate to Url
driver.Navigate().GoToUrl(“https://google.com”);
// Enter “webdriver” text and perform “ENTER” keyboard action
driver.FindElement(By.Name(“q”)).SendKeys(“webdriver” + Keys.Enter);
// Perform action ctrl + A (modifier CONTROL + Alphabet A) to select the page
Actions actionProvider = new Actions(driver);
IAction keydown = actionProvider.KeyDown(Keys.Control).SendKeys(“a”).Build();
keydown.Perform();
}
finally
{
driver.Quit();
}
{{< / code-panel >}}
{{< code-panel language=“ruby” >}}
require ‘selenium-webdriver’
driver = Selenium::WebDriver.for :chrome
begin
Navigate to URL
driver.get ‘https://google.com’
Enter “webdriver” text and perform “ENTER” keyboard action
driver.find_element(name: ‘q’).send_keys ‘webdriver’, :return
Perform action ctrl + A (modifier CONTROL + Alphabet A) to select the page
driver.action.key_down(:control).send_keys(‘a’).perform
ensure
driver.quit
end
{{< / code-panel >}}
{{< code-panel language=“javascript” >}}
(async function example() {
let driver = await new Builder().forBrowser(‘chrome’).build();
try {
// Navigate to Url
await driver.get(‘https://www.google.com’);
// Enter text "webdriver" and perform keyboard action "Enter"
await driver.findElement(By.name('q')).sendKeys('webdriver', Key.ENTER);
// Perform action ctrl + A (modifier CONTROL + Alphabet A) to select the page
await driver.actions().keyDown(Key.CONTROL).sendKeys('a').perform();
}
finally {
await driver.quit();
}
})();
{{< / code-panel >}}
{{< code-panel language=“kotlin” >}}
import org.openqa.selenium.By
import org.openqa.selenium.Keys
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.interactions.Actions
fun main() {
val driver = ChromeDriver()
try {
// Navigate to Url
driver.get(“https://google.com”)
// Enter "webdriver" text and perform "ENTER" keyboard action
driver.findElement(By.name("q")).sendKeys("webdriver" + Keys.ENTER)
val action = Actions(driver)
// Perform action ctrl + A (modifier CONTROL + Alphabet A) to select the page
action.keyDown(Keys.CONTROL).sendKeys("a").build().perform()
} finally {
driver.quit()
}
}
{{< / code-panel >}}
{{< / code-tab >}}
keyUp
keyUp用于模拟辅助按键(CONTROL, SHIFT, ALT)弹起或释放的操作.
{{< code-tab >}}
{{< code-panel language=“java” >}}
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
public class HelloSelenium {
public static void main(String args) {
WebDriver driver = new FirefoxDriver();
try {
// Navigate to Url
driver.get(“https://google.com”);
Actions action = new Actions(driver);
// Store google search box WebElement
WebElement search = driver.findElement(By.name("q"));
// Enters text "qwerty" with keyDown SHIFT key and after keyUp SHIFT key (QWERTYqwerty)
action.keyDown(Keys.SHIFT).sendKeys(search,"qwerty").keyUp(Keys.SHIFT).sendKeys("qwerty").perform();
} finally {
driver.quit();
}
}
}
{{< / code-panel >}}
{{< code-panel language=“python” >}}
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
Navigate to url
driver.get(“http://www.google.com”)
Store google search box WebElement
search = driver.find_element(By.NAME, “q”)
action = webdriver.ActionChains(driver)
Enters text “qwerty” with keyDown SHIFT key and after keyUp SHIFT key (QWERTYqwerty)
action.key_down(Keys.SHIFT).send_keys_to_element(search, “qwerty”).key_up(Keys.SHIFT).send_keys(“qwerty”).perform()
{{< / code-panel >}}
{{< code-panel language=“csharp” >}}
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
namespace HelloSelenium
{
class HelloSelenium
{
public static void Main(string args)
{
IWebDriver driver = new ChromeDriver();
try
{
// Navigate to Url
driver.Navigate().GoToUrl(“https://google.com”);
Actions action = new Actions(driver);
// Store google search box WebElement
IWebElement search = driver.FindElement(By.Name("q"));
// Enters text "qwerty" with keyDown SHIFT key and after keyUp SHIFT key (QWERTYqwerty)
action.KeyDown(Keys.Shift).SendKeys(search, "qwerty").KeyUp(Keys.Shift).SendKeys("qwerty").Perform();
}
finally {
driver.Quit();
}
}
}
}
{{< / code-panel >}}
{{< code-panel language=“ruby” >}}
require ‘selenium-webdriver’
driver = Selenium::WebDriver.for :chrome
begin
Navigate to URL
driver.get ‘https://google.com’
Store google search box WebElement
search = driver.find_element(name: ‘q’)
Enters text “qwerty” with keyDown SHIFT key and after keyUp SHIFT key (QWERTYqwerty)
driver.action.key_down(:shift).send_keys(search,‘qwerty’).key_up(:shift).send_keys(“qwerty”).perform
ensure
driver.quit
end
{{< / code-panel >}}
{{< code-panel language=“javascript” >}}
const {Builder, By, Key} = require(‘selenium-webdriver’);
(async function example() {
let driver = await new Builder().forBrowser(‘firefox’).build();
try {
// Navigate to Url
await driver.get(‘https://www.google.com’);
// Store google search box WebElement
let search = driver.findElement(By.name('q'));
// Enters text "qwerty" with keyDown SHIFT key and after keyUp SHIFT key (QWERTYqwerty)
await driver.actions().click(search).keyDown(Key.SHIFT).sendKeys("qwerty").keyUp(Key.SHIFT).sendKeys("qwerty").perform();
}
finally {
await driver.quit();
}
})();
{{< / code-panel >}}
{{< code-panel language=“kotlin” >}}
import org.openqa.selenium.By
import org.openqa.selenium.Keys
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.interactions.Actions
fun main() {
val driver = ChromeDriver()
try {
// Navigate to Url
driver.get(“https://google.com”)
// Store google search box WebElement
val search = driver.findElement(By.name("q"))
val action = Actions(driver)
// Enters text "qwerty" with keyDown SHIFT key and after keyUp SHIFT key (QWERTYqwerty)
action.keyDown(Keys.SHIFT).sendKeys(search, "qwerty").keyUp(Keys.SHIFT).sendKeys("qwerty").build().perform()
} finally {
driver.quit()
}
}
{{< / code-panel >}}
{{< / code-tab >}}
clear
清除可编辑元素的内容. 这仅适用于可编辑且可交互的元素, 否则Selenium将返回错误(无效的元素状态或元素不可交互).
{{< code-tab >}}
{{< code-panel language=“java” >}}
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class clear {
public static void main(String args) {
WebDriver driver = new ChromeDriver();
try {
// Navigate to Url
driver.get(“https://www.google.com”);
// Store ‘SearchInput’ element
WebElement searchInput = driver.findElement(By.name(“q”));
searchInput.sendKeys(“selenium”);
// Clears the entered text
searchInput.clear();
} finally {
driver.quit();
}
}
}
{{< / code-panel >}}
{{< code-panel language=“python” >}}
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
Navigate to url
driver.get(“http://www.google.com”)
Store ‘SearchInput’ element
SearchInput = driver.find_element(By.NAME, “q”)
SearchInput.send_keys(“selenium”)
Clears the entered text
SearchInput.clear()
{{< / code-panel >}}
{{< code-panel language=“csharp” >}}
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
namespace SnipetProjectDelete
{
class Program
{
static void Main(string args)
{
IWebDriver driver = new ChromeDriver();
try
{
// Navigate to Url
driver.Navigate().GoToUrl(@“https://www.google.com”);
// Store ‘SearchInput’ element
IWebElement searchInput = driver.FindElement(By.Name(“q”));
searchInput.SendKeys(“selenium”);
// Clears the entered text
searchInput.Clear();
}
finally
{
driver.Quit();
}
}
}
}
{{< / code-panel >}}
{{< code-panel language=“ruby” >}}
require ‘selenium-webdriver’
driver = Selenium::WebDriver.for :chrome
begin
Navigate to URL
driver.get ‘https://google.com’
store ‘search_input’ element
search_input = driver.find_element(name: ‘q’)
search_input.send_keys(‘selenium’)
Clears the entered text
search_input.clear
ensure
driver.quit
end
{{< / code-panel >}}
{{< code-panel language=“javascript” >}}
const {Builder, By} = require(‘selenium-webdriver’);
(async function example() {
let driver = await new Builder().forBrowser(‘chrome’).build();
try {
// Navigate to Url
await driver.get(‘https://www.google.com’);
// Store ‘SearchInput’ element
let searchInput = driver.findElement(By.name(‘q’));
await searchInput.sendKeys(“selenium”);
// Clears the entered text
await searchInput.clear();
}
finally {
await driver.quit();
}
})();
{{< / code-panel >}}
{{< code-panel language=“kotlin” >}}
import org.openqa.selenium.By
import org.openqa.selenium.chrome.ChromeDriver
fun main() {
val driver = ChromeDriver()
try {
// Navigate to Url
driver.get(“https://www.google.com”)
// Store ‘searchInput’ element
val searchInput = driver.findElement(By.name(“q”))
searchInput.sendKeys(“selenium”)
// Clears the entered text
searchInput.clear()
} finally {
driver.quit()
}
}
{{< / code-panel >}}
{{< / code-tab >}}