一种适用于任何与网页交互的按键输入设备的表现形式.
只有 2 个操作可以使用键盘完成: 按下某个键,以及释放一个按下的键. 除了支持 ASCII 字符外,每个键盘按键还具有 可以按特定顺序按下或释放的表现形式.
按键除了由常规unicode表示的按键, 其他键盘按键被分配了一些unicode值以用于操作Selenium 每种语言都有自己的方式来援引这些按键; 这里 可以找到完整列表
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform();
/examples/java/src/test/java/dev/selenium/actions_api/KeysTest.java
package dev.selenium.actions_api;
import dev.selenium.BaseChromeTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
public class KeysTest extends BaseChromeTest {
@Test
public void keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("A", textField.getAttribute("value"));
}
@Test
public void keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("Ab", textField.getAttribute("value"));
}
@Test
public void sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.sendKeys("abc")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("abc", textField.getAttribute("value"));
}
@Test
public void sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
driver.findElement(By.tagName("body")).click();
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.perform();
Assertions.assertEquals("Selenium!", textField.getAttribute("value"));
}
@Test
public void copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
Keys cmdCtrl = Platform.getCurrent().is(Platform.MAC) ? Keys.COMMAND : Keys.CONTROL;
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform();
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"));
}
}
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("abc")\
.perform()
/examples/python/tests/actions_api/test_keys.py
import sys
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
def test_key_down(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "ABC"
def test_key_up(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("a")\
.key_up(Keys.SHIFT)\
.send_keys("b")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "Ab"
def test_send_keys_to_active_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_send_keys_to_designated_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
driver.find_element(By.TAG_NAME, "body").click()
text_input = driver.find_element(By.ID, "textInput")
ActionChains(driver)\
.send_keys_to_element(text_input, "abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_copy_and_paste(firefox_driver):
driver = firefox_driver
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
ActionChains(driver)\
.send_keys("Selenium!")\
.send_keys(Keys.ARROW_LEFT)\
.key_down(Keys.SHIFT)\
.send_keys(Keys.ARROW_UP)\
.key_up(Keys.SHIFT)\
.key_down(cmd_ctrl)\
.send_keys("xvv")\
.key_up(cmd_ctrl)\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "SeleniumSelenium!"
.KeyDown(Keys.Shift)
.SendKeys("a")
.Perform();
/examples/dotnet/SeleniumDocs/ActionsAPI/KeysTest.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
namespace SeleniumDocs.ActionsAPI
{
[TestClass]
public class KeysTest : BaseFirefoxTest
{
[TestMethod]
public void KeyDown()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("A", textField.GetAttribute("value"));
}
[TestMethod]
public void KeyUp()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.KeyUp(Keys.Shift)
.SendKeys("b")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("Ab", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToActiveElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.SendKeys("abc")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToDesignatedElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
driver.FindElement(By.TagName("body")).Click();
IWebElement textField = driver.FindElement(By.Id("textInput"));
new Actions(driver)
.SendKeys(textField, "abc")
.Perform();
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void CopyAndPaste()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
var capabilities = ((WebDriver)driver).Capabilities;
String platformName = (string)capabilities.GetCapability("platformName");
String cmdCtrl = platformName.Contains("mac") ? Keys.Command : Keys.Control;
new Actions(driver)
.SendKeys("Selenium!")
.SendKeys(Keys.ArrowLeft)
.KeyDown(Keys.Shift)
.SendKeys(Keys.ArrowUp)
.KeyUp(Keys.Shift)
.KeyDown(cmdCtrl)
.SendKeys("xvv")
.KeyUp(cmdCtrl)
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("SeleniumSelenium!", textField.GetAttribute("value"));
}
}
}
driver.action
.key_down(:shift)
.send_keys('a')
.perform
/examples/ruby/spec/actions_api/keys_spec.rb
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Keys' do
let(:driver) { start_session }
let(:wait) { Selenium::WebDriver::Wait.new(timeout: 2) }
it 'key down' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'A'
end
it 'key up' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.key_up(:shift)
.send_keys('b')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'Ab'
end
it 'sends keys to active element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.send_keys('abc')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'abc'
end
it 'sends keys to designated element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
driver.find_element(tag_name: 'body').click
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
text_field = driver.find_element(id: 'textInput')
driver.action
.send_keys(text_field, 'Selenium!')
.perform
expect(text_field.attribute('value')).to eq 'Selenium!'
end
it 'copy and paste' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
cmd_ctrl = driver.capabilities.platform_name.include?('mac') ? :command : :control
driver.action
.send_keys('Selenium!')
.send_keys(:arrow_left)
.key_down(:shift)
.send_keys(:arrow_up)
.key_up(:shift)
.key_down(cmd_ctrl)
.send_keys('xvv')
.key_up(cmd_ctrl)
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'SeleniumSelenium!'
end
end
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.perform()
/examples/javascript/test/actionsApi/keysTest.spec.js
const { By, Key, Browser, Builder} = require('selenium-webdriver')
const assert = require('assert')
const { platform } = require('node:process')
describe('Keyboard Action - Keys test', function() {
let driver
before(async function() {
driver = await new Builder().forBrowser('chrome').build();
})
after(async () => await driver.quit())
it('KeyDown', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.perform()
const textField = driver.findElement(By.id('textInput'))
assert.deepStrictEqual(await textField.getAttribute('value'), 'A')
})
it('KeyUp', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.keyUp(Key.SHIFT)
.sendKeys('b')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'Ab')
})
it('sendKeys', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.sendKeys('abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Designated Element', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.findElement(By.css('body')).click()
const textField = await driver.findElement(By.id('textInput'))
await driver.actions()
.sendKeys(textField, 'abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Copy and Paste', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = await driver.findElement(By.id('textInput'))
const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL
await driver.actions()
.click(textField)
.sendKeys('Selenium!')
.sendKeys(Key.ARROW_LEFT)
.keyDown(Key.SHIFT)
.sendKeys(Key.ARROW_UP)
.keyUp(Key.SHIFT)
.keyDown(cmdCtrl)
.sendKeys('xvv')
.keyUp(cmdCtrl)
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'SeleniumSelenium!')
})
})
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform()
/examples/kotlin/src/test/kotlin/dev/selenium/actions_api/KeysTest.kt
package dev.selenium.actions_api
import dev.selenium.BaseTest
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.openqa.selenium.By
import org.openqa.selenium.HasCapabilities
import org.openqa.selenium.Keys
import org.openqa.selenium.Platform
import org.openqa.selenium.interactions.Actions
class KeysTest : BaseTest() {
@Test
fun keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("A", textField.getAttribute("value"))
}
@Test
fun keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("Ab", textField.getAttribute("value"))
}
@Test
fun sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.sendKeys("abc")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("abc", textField.getAttribute("value"))
}
@Test
fun sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
driver.findElement(By.tagName("body")).click()
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.perform()
Assertions.assertEquals("Selenium!", textField.getAttribute("value"))
}
@Test
fun copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
val platformName = (driver as HasCapabilities).getCapabilities().getPlatformName()
val cmdCtrl = if(platformName == Platform.MAC) Keys.COMMAND else Keys.CONTROL
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform()
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"))
}
}
释放按键
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform();
/examples/java/src/test/java/dev/selenium/actions_api/KeysTest.java
package dev.selenium.actions_api;
import dev.selenium.BaseChromeTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
public class KeysTest extends BaseChromeTest {
@Test
public void keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("A", textField.getAttribute("value"));
}
@Test
public void keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("Ab", textField.getAttribute("value"));
}
@Test
public void sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.sendKeys("abc")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("abc", textField.getAttribute("value"));
}
@Test
public void sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
driver.findElement(By.tagName("body")).click();
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.perform();
Assertions.assertEquals("Selenium!", textField.getAttribute("value"));
}
@Test
public void copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
Keys cmdCtrl = Platform.getCurrent().is(Platform.MAC) ? Keys.COMMAND : Keys.CONTROL;
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform();
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"));
}
}
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("a")\
.key_up(Keys.SHIFT)\
.send_keys("b")\
.perform()
/examples/python/tests/actions_api/test_keys.py
import sys
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
def test_key_down(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "ABC"
def test_key_up(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("a")\
.key_up(Keys.SHIFT)\
.send_keys("b")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "Ab"
def test_send_keys_to_active_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_send_keys_to_designated_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
driver.find_element(By.TAG_NAME, "body").click()
text_input = driver.find_element(By.ID, "textInput")
ActionChains(driver)\
.send_keys_to_element(text_input, "abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_copy_and_paste(firefox_driver):
driver = firefox_driver
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
ActionChains(driver)\
.send_keys("Selenium!")\
.send_keys(Keys.ARROW_LEFT)\
.key_down(Keys.SHIFT)\
.send_keys(Keys.ARROW_UP)\
.key_up(Keys.SHIFT)\
.key_down(cmd_ctrl)\
.send_keys("xvv")\
.key_up(cmd_ctrl)\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "SeleniumSelenium!"
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.KeyUp(Keys.Shift)
.SendKeys("b")
.Perform();
/examples/dotnet/SeleniumDocs/ActionsAPI/KeysTest.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
namespace SeleniumDocs.ActionsAPI
{
[TestClass]
public class KeysTest : BaseFirefoxTest
{
[TestMethod]
public void KeyDown()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("A", textField.GetAttribute("value"));
}
[TestMethod]
public void KeyUp()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.KeyUp(Keys.Shift)
.SendKeys("b")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("Ab", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToActiveElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.SendKeys("abc")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToDesignatedElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
driver.FindElement(By.TagName("body")).Click();
IWebElement textField = driver.FindElement(By.Id("textInput"));
new Actions(driver)
.SendKeys(textField, "abc")
.Perform();
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void CopyAndPaste()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
var capabilities = ((WebDriver)driver).Capabilities;
String platformName = (string)capabilities.GetCapability("platformName");
String cmdCtrl = platformName.Contains("mac") ? Keys.Command : Keys.Control;
new Actions(driver)
.SendKeys("Selenium!")
.SendKeys(Keys.ArrowLeft)
.KeyDown(Keys.Shift)
.SendKeys(Keys.ArrowUp)
.KeyUp(Keys.Shift)
.KeyDown(cmdCtrl)
.SendKeys("xvv")
.KeyUp(cmdCtrl)
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("SeleniumSelenium!", textField.GetAttribute("value"));
}
}
}
driver.action
.key_down(:shift)
.send_keys('a')
.key_up(:shift)
.send_keys('b')
.perform
/examples/ruby/spec/actions_api/keys_spec.rb
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Keys' do
let(:driver) { start_session }
let(:wait) { Selenium::WebDriver::Wait.new(timeout: 2) }
it 'key down' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'A'
end
it 'key up' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.key_up(:shift)
.send_keys('b')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'Ab'
end
it 'sends keys to active element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.send_keys('abc')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'abc'
end
it 'sends keys to designated element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
driver.find_element(tag_name: 'body').click
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
text_field = driver.find_element(id: 'textInput')
driver.action
.send_keys(text_field, 'Selenium!')
.perform
expect(text_field.attribute('value')).to eq 'Selenium!'
end
it 'copy and paste' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
cmd_ctrl = driver.capabilities.platform_name.include?('mac') ? :command : :control
driver.action
.send_keys('Selenium!')
.send_keys(:arrow_left)
.key_down(:shift)
.send_keys(:arrow_up)
.key_up(:shift)
.key_down(cmd_ctrl)
.send_keys('xvv')
.key_up(cmd_ctrl)
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'SeleniumSelenium!'
end
end
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.keyUp(Key.SHIFT)
.sendKeys('b')
.perform()
/examples/javascript/test/actionsApi/keysTest.spec.js
const { By, Key, Browser, Builder} = require('selenium-webdriver')
const assert = require('assert')
const { platform } = require('node:process')
describe('Keyboard Action - Keys test', function() {
let driver
before(async function() {
driver = await new Builder().forBrowser('chrome').build();
})
after(async () => await driver.quit())
it('KeyDown', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.perform()
const textField = driver.findElement(By.id('textInput'))
assert.deepStrictEqual(await textField.getAttribute('value'), 'A')
})
it('KeyUp', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.keyUp(Key.SHIFT)
.sendKeys('b')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'Ab')
})
it('sendKeys', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.sendKeys('abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Designated Element', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.findElement(By.css('body')).click()
const textField = await driver.findElement(By.id('textInput'))
await driver.actions()
.sendKeys(textField, 'abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Copy and Paste', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = await driver.findElement(By.id('textInput'))
const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL
await driver.actions()
.click(textField)
.sendKeys('Selenium!')
.sendKeys(Key.ARROW_LEFT)
.keyDown(Key.SHIFT)
.sendKeys(Key.ARROW_UP)
.keyUp(Key.SHIFT)
.keyDown(cmdCtrl)
.sendKeys('xvv')
.keyUp(cmdCtrl)
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'SeleniumSelenium!')
})
})
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform()
/examples/kotlin/src/test/kotlin/dev/selenium/actions_api/KeysTest.kt
package dev.selenium.actions_api
import dev.selenium.BaseTest
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.openqa.selenium.By
import org.openqa.selenium.HasCapabilities
import org.openqa.selenium.Keys
import org.openqa.selenium.Platform
import org.openqa.selenium.interactions.Actions
class KeysTest : BaseTest() {
@Test
fun keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("A", textField.getAttribute("value"))
}
@Test
fun keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("Ab", textField.getAttribute("value"))
}
@Test
fun sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.sendKeys("abc")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("abc", textField.getAttribute("value"))
}
@Test
fun sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
driver.findElement(By.tagName("body")).click()
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.perform()
Assertions.assertEquals("Selenium!", textField.getAttribute("value"))
}
@Test
fun copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
val platformName = (driver as HasCapabilities).getCapabilities().getPlatformName()
val cmdCtrl = if(platformName == Platform.MAC) Keys.COMMAND else Keys.CONTROL
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform()
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"))
}
}
键入
这是Actions API的一种便捷方法, 它将 keyDown 和 keyUp 命令组合在一个操作中. 执行此命令与使用 element 方法略有不同, 但这主要用于,需要在其他操作之间键入多个字符时使用.
活跃元素 new Actions(driver)
.sendKeys("abc")
.perform();
/examples/java/src/test/java/dev/selenium/actions_api/KeysTest.java
package dev.selenium.actions_api;
import dev.selenium.BaseChromeTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
public class KeysTest extends BaseChromeTest {
@Test
public void keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("A", textField.getAttribute("value"));
}
@Test
public void keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("Ab", textField.getAttribute("value"));
}
@Test
public void sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.sendKeys("abc")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("abc", textField.getAttribute("value"));
}
@Test
public void sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
driver.findElement(By.tagName("body")).click();
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.perform();
Assertions.assertEquals("Selenium!", textField.getAttribute("value"));
}
@Test
public void copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
Keys cmdCtrl = Platform.getCurrent().is(Platform.MAC) ? Keys.COMMAND : Keys.CONTROL;
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform();
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"));
}
}
ActionChains(driver)\
.send_keys("abc")\
.perform()
/examples/python/tests/actions_api/test_keys.py
import sys
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
def test_key_down(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "ABC"
def test_key_up(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("a")\
.key_up(Keys.SHIFT)\
.send_keys("b")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "Ab"
def test_send_keys_to_active_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_send_keys_to_designated_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
driver.find_element(By.TAG_NAME, "body").click()
text_input = driver.find_element(By.ID, "textInput")
ActionChains(driver)\
.send_keys_to_element(text_input, "abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_copy_and_paste(firefox_driver):
driver = firefox_driver
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
ActionChains(driver)\
.send_keys("Selenium!")\
.send_keys(Keys.ARROW_LEFT)\
.key_down(Keys.SHIFT)\
.send_keys(Keys.ARROW_UP)\
.key_up(Keys.SHIFT)\
.key_down(cmd_ctrl)\
.send_keys("xvv")\
.key_up(cmd_ctrl)\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "SeleniumSelenium!"
new Actions(driver)
.SendKeys("abc")
/examples/dotnet/SeleniumDocs/ActionsAPI/KeysTest.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
namespace SeleniumDocs.ActionsAPI
{
[TestClass]
public class KeysTest : BaseFirefoxTest
{
[TestMethod]
public void KeyDown()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("A", textField.GetAttribute("value"));
}
[TestMethod]
public void KeyUp()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.KeyUp(Keys.Shift)
.SendKeys("b")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("Ab", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToActiveElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.SendKeys("abc")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToDesignatedElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
driver.FindElement(By.TagName("body")).Click();
IWebElement textField = driver.FindElement(By.Id("textInput"));
new Actions(driver)
.SendKeys(textField, "abc")
.Perform();
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void CopyAndPaste()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
var capabilities = ((WebDriver)driver).Capabilities;
String platformName = (string)capabilities.GetCapability("platformName");
String cmdCtrl = platformName.Contains("mac") ? Keys.Command : Keys.Control;
new Actions(driver)
.SendKeys("Selenium!")
.SendKeys(Keys.ArrowLeft)
.KeyDown(Keys.Shift)
.SendKeys(Keys.ArrowUp)
.KeyUp(Keys.Shift)
.KeyDown(cmdCtrl)
.SendKeys("xvv")
.KeyUp(cmdCtrl)
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("SeleniumSelenium!", textField.GetAttribute("value"));
}
}
}
driver.action
.send_keys('abc')
.perform
/examples/ruby/spec/actions_api/keys_spec.rb
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Keys' do
let(:driver) { start_session }
let(:wait) { Selenium::WebDriver::Wait.new(timeout: 2) }
it 'key down' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'A'
end
it 'key up' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.key_up(:shift)
.send_keys('b')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'Ab'
end
it 'sends keys to active element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.send_keys('abc')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'abc'
end
it 'sends keys to designated element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
driver.find_element(tag_name: 'body').click
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
text_field = driver.find_element(id: 'textInput')
driver.action
.send_keys(text_field, 'Selenium!')
.perform
expect(text_field.attribute('value')).to eq 'Selenium!'
end
it 'copy and paste' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
cmd_ctrl = driver.capabilities.platform_name.include?('mac') ? :command : :control
driver.action
.send_keys('Selenium!')
.send_keys(:arrow_left)
.key_down(:shift)
.send_keys(:arrow_up)
.key_up(:shift)
.key_down(cmd_ctrl)
.send_keys('xvv')
.key_up(cmd_ctrl)
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'SeleniumSelenium!'
end
end
await driver.actions()
.sendKeys('abc')
.perform()
/examples/javascript/test/actionsApi/keysTest.spec.js
const { By, Key, Browser, Builder} = require('selenium-webdriver')
const assert = require('assert')
const { platform } = require('node:process')
describe('Keyboard Action - Keys test', function() {
let driver
before(async function() {
driver = await new Builder().forBrowser('chrome').build();
})
after(async () => await driver.quit())
it('KeyDown', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.perform()
const textField = driver.findElement(By.id('textInput'))
assert.deepStrictEqual(await textField.getAttribute('value'), 'A')
})
it('KeyUp', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.keyUp(Key.SHIFT)
.sendKeys('b')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'Ab')
})
it('sendKeys', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.sendKeys('abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Designated Element', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.findElement(By.css('body')).click()
const textField = await driver.findElement(By.id('textInput'))
await driver.actions()
.sendKeys(textField, 'abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Copy and Paste', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = await driver.findElement(By.id('textInput'))
const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL
await driver.actions()
.click(textField)
.sendKeys('Selenium!')
.sendKeys(Key.ARROW_LEFT)
.keyDown(Key.SHIFT)
.sendKeys(Key.ARROW_UP)
.keyUp(Key.SHIFT)
.keyDown(cmdCtrl)
.sendKeys('xvv')
.keyUp(cmdCtrl)
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'SeleniumSelenium!')
})
})
.sendKeys("abc")
.perform()
/examples/kotlin/src/test/kotlin/dev/selenium/actions_api/KeysTest.kt
package dev.selenium.actions_api
import dev.selenium.BaseTest
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.openqa.selenium.By
import org.openqa.selenium.HasCapabilities
import org.openqa.selenium.Keys
import org.openqa.selenium.Platform
import org.openqa.selenium.interactions.Actions
class KeysTest : BaseTest() {
@Test
fun keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("A", textField.getAttribute("value"))
}
@Test
fun keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("Ab", textField.getAttribute("value"))
}
@Test
fun sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.sendKeys("abc")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("abc", textField.getAttribute("value"))
}
@Test
fun sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
driver.findElement(By.tagName("body")).click()
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.perform()
Assertions.assertEquals("Selenium!", textField.getAttribute("value"))
}
@Test
fun copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
val platformName = (driver as HasCapabilities).getCapabilities().getPlatformName()
val cmdCtrl = if(platformName == Platform.MAC) Keys.COMMAND else Keys.CONTROL
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform()
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"))
}
}
指定元素
new Actions(driver)
.sendKeys(textField, "Selenium!")
.perform();
/examples/java/src/test/java/dev/selenium/actions_api/KeysTest.java
package dev.selenium.actions_api;
import dev.selenium.BaseChromeTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
public class KeysTest extends BaseChromeTest {
@Test
public void keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("A", textField.getAttribute("value"));
}
@Test
public void keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("Ab", textField.getAttribute("value"));
}
@Test
public void sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.sendKeys("abc")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("abc", textField.getAttribute("value"));
}
@Test
public void sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
driver.findElement(By.tagName("body")).click();
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.perform();
Assertions.assertEquals("Selenium!", textField.getAttribute("value"));
}
@Test
public void copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
Keys cmdCtrl = Platform.getCurrent().is(Platform.MAC) ? Keys.COMMAND : Keys.CONTROL;
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform();
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"));
}
}
text_input = driver.find_element(By.ID, "textInput")
ActionChains(driver)\
.send_keys_to_element(text_input, "abc")\
.perform()
/examples/python/tests/actions_api/test_keys.py
import sys
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
def test_key_down(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "ABC"
def test_key_up(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("a")\
.key_up(Keys.SHIFT)\
.send_keys("b")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "Ab"
def test_send_keys_to_active_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_send_keys_to_designated_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
driver.find_element(By.TAG_NAME, "body").click()
text_input = driver.find_element(By.ID, "textInput")
ActionChains(driver)\
.send_keys_to_element(text_input, "abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_copy_and_paste(firefox_driver):
driver = firefox_driver
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
ActionChains(driver)\
.send_keys("Selenium!")\
.send_keys(Keys.ARROW_LEFT)\
.key_down(Keys.SHIFT)\
.send_keys(Keys.ARROW_UP)\
.key_up(Keys.SHIFT)\
.key_down(cmd_ctrl)\
.send_keys("xvv")\
.key_up(cmd_ctrl)\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "SeleniumSelenium!"
driver.FindElement(By.TagName("body")).Click();
IWebElement textField = driver.FindElement(By.Id("textInput"));
new Actions(driver)
/examples/dotnet/SeleniumDocs/ActionsAPI/KeysTest.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
namespace SeleniumDocs.ActionsAPI
{
[TestClass]
public class KeysTest : BaseFirefoxTest
{
[TestMethod]
public void KeyDown()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("A", textField.GetAttribute("value"));
}
[TestMethod]
public void KeyUp()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.KeyUp(Keys.Shift)
.SendKeys("b")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("Ab", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToActiveElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.SendKeys("abc")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToDesignatedElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
driver.FindElement(By.TagName("body")).Click();
IWebElement textField = driver.FindElement(By.Id("textInput"));
new Actions(driver)
.SendKeys(textField, "abc")
.Perform();
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void CopyAndPaste()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
var capabilities = ((WebDriver)driver).Capabilities;
String platformName = (string)capabilities.GetCapability("platformName");
String cmdCtrl = platformName.Contains("mac") ? Keys.Command : Keys.Control;
new Actions(driver)
.SendKeys("Selenium!")
.SendKeys(Keys.ArrowLeft)
.KeyDown(Keys.Shift)
.SendKeys(Keys.ArrowUp)
.KeyUp(Keys.Shift)
.KeyDown(cmdCtrl)
.SendKeys("xvv")
.KeyUp(cmdCtrl)
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("SeleniumSelenium!", textField.GetAttribute("value"));
}
}
}
text_field = driver.find_element(id: 'textInput')
driver.action
.send_keys(text_field, 'Selenium!')
.perform
/examples/ruby/spec/actions_api/keys_spec.rb
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Keys' do
let(:driver) { start_session }
let(:wait) { Selenium::WebDriver::Wait.new(timeout: 2) }
it 'key down' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'A'
end
it 'key up' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.key_up(:shift)
.send_keys('b')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'Ab'
end
it 'sends keys to active element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.send_keys('abc')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'abc'
end
it 'sends keys to designated element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
driver.find_element(tag_name: 'body').click
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
text_field = driver.find_element(id: 'textInput')
driver.action
.send_keys(text_field, 'Selenium!')
.perform
expect(text_field.attribute('value')).to eq 'Selenium!'
end
it 'copy and paste' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
cmd_ctrl = driver.capabilities.platform_name.include?('mac') ? :command : :control
driver.action
.send_keys('Selenium!')
.send_keys(:arrow_left)
.key_down(:shift)
.send_keys(:arrow_up)
.key_up(:shift)
.key_down(cmd_ctrl)
.send_keys('xvv')
.key_up(cmd_ctrl)
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'SeleniumSelenium!'
end
end
const textField = await driver.findElement(By.id('textInput'))
await driver.actions()
.sendKeys(textField, 'abc')
.perform()
/examples/javascript/test/actionsApi/keysTest.spec.js
const { By, Key, Browser, Builder} = require('selenium-webdriver')
const assert = require('assert')
const { platform } = require('node:process')
describe('Keyboard Action - Keys test', function() {
let driver
before(async function() {
driver = await new Builder().forBrowser('chrome').build();
})
after(async () => await driver.quit())
it('KeyDown', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.perform()
const textField = driver.findElement(By.id('textInput'))
assert.deepStrictEqual(await textField.getAttribute('value'), 'A')
})
it('KeyUp', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.keyUp(Key.SHIFT)
.sendKeys('b')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'Ab')
})
it('sendKeys', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.sendKeys('abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Designated Element', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.findElement(By.css('body')).click()
const textField = await driver.findElement(By.id('textInput'))
await driver.actions()
.sendKeys(textField, 'abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Copy and Paste', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = await driver.findElement(By.id('textInput'))
const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL
await driver.actions()
.click(textField)
.sendKeys('Selenium!')
.sendKeys(Key.ARROW_LEFT)
.keyDown(Key.SHIFT)
.sendKeys(Key.ARROW_UP)
.keyUp(Key.SHIFT)
.keyDown(cmdCtrl)
.sendKeys('xvv')
.keyUp(cmdCtrl)
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'SeleniumSelenium!')
})
})
Actions(driver)
.sendKeys(textField, "Selenium!")
.perform()
/examples/kotlin/src/test/kotlin/dev/selenium/actions_api/KeysTest.kt
package dev.selenium.actions_api
import dev.selenium.BaseTest
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.openqa.selenium.By
import org.openqa.selenium.HasCapabilities
import org.openqa.selenium.Keys
import org.openqa.selenium.Platform
import org.openqa.selenium.interactions.Actions
class KeysTest : BaseTest() {
@Test
fun keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("A", textField.getAttribute("value"))
}
@Test
fun keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("Ab", textField.getAttribute("value"))
}
@Test
fun sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.sendKeys("abc")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("abc", textField.getAttribute("value"))
}
@Test
fun sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
driver.findElement(By.tagName("body")).click()
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.perform()
Assertions.assertEquals("Selenium!", textField.getAttribute("value"))
}
@Test
fun copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
val platformName = (driver as HasCapabilities).getCapabilities().getPlatformName()
val cmdCtrl = if(platformName == Platform.MAC) Keys.COMMAND else Keys.CONTROL
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform()
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"))
}
}
复制粘贴
下面是使用上述所有方法执行复制/粘贴操作的示例. 请注意, 用于此操作的键位会有所不同, 具体取决于它是否是 Mac OS. 此代码将以文本收尾: SeleniumSelenium!
Keys cmdCtrl = Platform.getCurrent().is(Platform.MAC) ? Keys.COMMAND : Keys.CONTROL;
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform();
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"));
/examples/java/src/test/java/dev/selenium/actions_api/KeysTest.java
package dev.selenium.actions_api;
import dev.selenium.BaseChromeTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
public class KeysTest extends BaseChromeTest {
@Test
public void keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("A", textField.getAttribute("value"));
}
@Test
public void keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("Ab", textField.getAttribute("value"));
}
@Test
public void sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
new Actions(driver)
.sendKeys("abc")
.perform();
WebElement textField = driver.findElement(By.id("textInput"));
Assertions.assertEquals("abc", textField.getAttribute("value"));
}
@Test
public void sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
driver.findElement(By.tagName("body")).click();
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.perform();
Assertions.assertEquals("Selenium!", textField.getAttribute("value"));
}
@Test
public void copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html");
Keys cmdCtrl = Platform.getCurrent().is(Platform.MAC) ? Keys.COMMAND : Keys.CONTROL;
WebElement textField = driver.findElement(By.id("textInput"));
new Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform();
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"));
}
}
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
ActionChains(driver)\
.send_keys("Selenium!")\
.send_keys(Keys.ARROW_LEFT)\
.key_down(Keys.SHIFT)\
.send_keys(Keys.ARROW_UP)\
.key_up(Keys.SHIFT)\
.key_down(cmd_ctrl)\
.send_keys("xvv")\
.key_up(cmd_ctrl)\
.perform()
/examples/python/tests/actions_api/test_keys.py
import sys
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
def test_key_down(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "ABC"
def test_key_up(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.key_down(Keys.SHIFT)\
.send_keys("a")\
.key_up(Keys.SHIFT)\
.send_keys("b")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "Ab"
def test_send_keys_to_active_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
ActionChains(driver)\
.send_keys("abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_send_keys_to_designated_element(driver):
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
driver.find_element(By.TAG_NAME, "body").click()
text_input = driver.find_element(By.ID, "textInput")
ActionChains(driver)\
.send_keys_to_element(text_input, "abc")\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "abc"
def test_copy_and_paste(firefox_driver):
driver = firefox_driver
driver.get('https://selenium.dev/selenium/web/single_text_input.html')
cmd_ctrl = Keys.COMMAND if sys.platform == 'darwin' else Keys.CONTROL
ActionChains(driver)\
.send_keys("Selenium!")\
.send_keys(Keys.ARROW_LEFT)\
.key_down(Keys.SHIFT)\
.send_keys(Keys.ARROW_UP)\
.key_up(Keys.SHIFT)\
.key_down(cmd_ctrl)\
.send_keys("xvv")\
.key_up(cmd_ctrl)\
.perform()
assert driver.find_element(By.ID, "textInput").get_attribute('value') == "SeleniumSelenium!"
var capabilities = ((WebDriver)driver).Capabilities;
String platformName = (string)capabilities.GetCapability("platformName");
String cmdCtrl = platformName.Contains("mac") ? Keys.Command : Keys.Control;
new Actions(driver)
.SendKeys("Selenium!")
.SendKeys(Keys.ArrowLeft)
.KeyDown(Keys.Shift)
.SendKeys(Keys.ArrowUp)
/examples/dotnet/SeleniumDocs/ActionsAPI/KeysTest.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
namespace SeleniumDocs.ActionsAPI
{
[TestClass]
public class KeysTest : BaseFirefoxTest
{
[TestMethod]
public void KeyDown()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("A", textField.GetAttribute("value"));
}
[TestMethod]
public void KeyUp()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.KeyDown(Keys.Shift)
.SendKeys("a")
.KeyUp(Keys.Shift)
.SendKeys("b")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("Ab", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToActiveElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
new Actions(driver)
.SendKeys("abc")
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void SendKeysToDesignatedElement()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
driver.FindElement(By.TagName("body")).Click();
IWebElement textField = driver.FindElement(By.Id("textInput"));
new Actions(driver)
.SendKeys(textField, "abc")
.Perform();
Assert.AreEqual("abc", textField.GetAttribute("value"));
}
[TestMethod]
public void CopyAndPaste()
{
driver.Url = "https://selenium.dev/selenium/web/single_text_input.html";
var capabilities = ((WebDriver)driver).Capabilities;
String platformName = (string)capabilities.GetCapability("platformName");
String cmdCtrl = platformName.Contains("mac") ? Keys.Command : Keys.Control;
new Actions(driver)
.SendKeys("Selenium!")
.SendKeys(Keys.ArrowLeft)
.KeyDown(Keys.Shift)
.SendKeys(Keys.ArrowUp)
.KeyUp(Keys.Shift)
.KeyDown(cmdCtrl)
.SendKeys("xvv")
.KeyUp(cmdCtrl)
.Perform();
IWebElement textField = driver.FindElement(By.Id("textInput"));
Assert.AreEqual("SeleniumSelenium!", textField.GetAttribute("value"));
}
}
}
driver.action
.send_keys('Selenium!')
.send_keys(:arrow_left)
.key_down(:shift)
.send_keys(:arrow_up)
.key_up(:shift)
.key_down(cmd_ctrl)
.send_keys('xvv')
.key_up(cmd_ctrl)
.perform
/examples/ruby/spec/actions_api/keys_spec.rb
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Keys' do
let(:driver) { start_session }
let(:wait) { Selenium::WebDriver::Wait.new(timeout: 2) }
it 'key down' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'A'
end
it 'key up' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.key_down(:shift)
.send_keys('a')
.key_up(:shift)
.send_keys('b')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'Ab'
end
it 'sends keys to active element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
driver.action
.send_keys('abc')
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'abc'
end
it 'sends keys to designated element' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
driver.find_element(tag_name: 'body').click
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
text_field = driver.find_element(id: 'textInput')
driver.action
.send_keys(text_field, 'Selenium!')
.perform
expect(text_field.attribute('value')).to eq 'Selenium!'
end
it 'copy and paste' do
driver.get 'https://www.selenium.dev/selenium/web/single_text_input.html'
wait.until { driver.find_element(id: 'textInput').attribute('autofocus') }
cmd_ctrl = driver.capabilities.platform_name.include?('mac') ? :command : :control
driver.action
.send_keys('Selenium!')
.send_keys(:arrow_left)
.key_down(:shift)
.send_keys(:arrow_up)
.key_up(:shift)
.key_down(cmd_ctrl)
.send_keys('xvv')
.key_up(cmd_ctrl)
.perform
expect(driver.find_element(id: 'textInput').attribute('value')).to eq 'SeleniumSelenium!'
end
end
const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL
await driver.actions()
.click(textField)
.sendKeys('Selenium!')
.sendKeys(Key.ARROW_LEFT)
.keyDown(Key.SHIFT)
.sendKeys(Key.ARROW_UP)
.keyUp(Key.SHIFT)
.keyDown(cmdCtrl)
.sendKeys('xvv')
.keyUp(cmdCtrl)
.perform()
/examples/javascript/test/actionsApi/keysTest.spec.js
const { By, Key, Browser, Builder} = require('selenium-webdriver')
const assert = require('assert')
const { platform } = require('node:process')
describe('Keyboard Action - Keys test', function() {
let driver
before(async function() {
driver = await new Builder().forBrowser('chrome').build();
})
after(async () => await driver.quit())
it('KeyDown', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.perform()
const textField = driver.findElement(By.id('textInput'))
assert.deepStrictEqual(await textField.getAttribute('value'), 'A')
})
it('KeyUp', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.keyDown(Key.SHIFT)
.sendKeys('a')
.keyUp(Key.SHIFT)
.sendKeys('b')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'Ab')
})
it('sendKeys', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = driver.findElement(By.id('textInput'))
await textField.click()
await driver.actions()
.sendKeys('abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Designated Element', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
await driver.findElement(By.css('body')).click()
const textField = await driver.findElement(By.id('textInput'))
await driver.actions()
.sendKeys(textField, 'abc')
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'abc')
})
it('Copy and Paste', async function() {
await driver.get('https://www.selenium.dev/selenium/web/single_text_input.html')
const textField = await driver.findElement(By.id('textInput'))
const cmdCtrl = platform.includes('darwin') ? Key.COMMAND : Key.CONTROL
await driver.actions()
.click(textField)
.sendKeys('Selenium!')
.sendKeys(Key.ARROW_LEFT)
.keyDown(Key.SHIFT)
.sendKeys(Key.ARROW_UP)
.keyUp(Key.SHIFT)
.keyDown(cmdCtrl)
.sendKeys('xvv')
.keyUp(cmdCtrl)
.perform()
assert.deepStrictEqual(await textField.getAttribute('value'), 'SeleniumSelenium!')
})
})
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform()
/examples/kotlin/src/test/kotlin/dev/selenium/actions_api/KeysTest.kt
package dev.selenium.actions_api
import dev.selenium.BaseTest
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.openqa.selenium.By
import org.openqa.selenium.HasCapabilities
import org.openqa.selenium.Keys
import org.openqa.selenium.Platform
import org.openqa.selenium.interactions.Actions
class KeysTest : BaseTest() {
@Test
fun keyDown() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("A", textField.getAttribute("value"))
}
@Test
fun keyUp() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.keyDown(Keys.SHIFT)
.sendKeys("a")
.keyUp(Keys.SHIFT)
.sendKeys("b")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("Ab", textField.getAttribute("value"))
}
@Test
fun sendKeysToActiveElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
Actions(driver)
.sendKeys("abc")
.perform()
val textField = driver.findElement(By.id("textInput"))
Assertions.assertEquals("abc", textField.getAttribute("value"))
}
@Test
fun sendKeysToDesignatedElement() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
driver.findElement(By.tagName("body")).click()
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.perform()
Assertions.assertEquals("Selenium!", textField.getAttribute("value"))
}
@Test
fun copyAndPaste() {
driver.get("https://www.selenium.dev/selenium/web/single_text_input.html")
val platformName = (driver as HasCapabilities).getCapabilities().getPlatformName()
val cmdCtrl = if(platformName == Platform.MAC) Keys.COMMAND else Keys.CONTROL
val textField = driver.findElement(By.id("textInput"))
Actions(driver)
.sendKeys(textField, "Selenium!")
.sendKeys(Keys.ARROW_LEFT)
.keyDown(Keys.SHIFT)
.sendKeys(Keys.ARROW_UP)
.keyUp(Keys.SHIFT)
.keyDown(cmdCtrl)
.sendKeys("xvv")
.keyUp(cmdCtrl)
.perform()
Assertions.assertEquals("SeleniumSelenium!", textField.getAttribute("value"))
}
}
Support the Selenium Project
Learn more or view the full list of sponsors.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4