Input
This section contains the APIs related to input commands.
Perform Actions
Actions selectThreeOptions =
actions.click(options.get(1)).keyDown(Keys.SHIFT).click(options.get(3)).keyUp(Keys.SHIFT);
input.perform(windowHandle, selectThreeOptions.getSequences());
Show full example
package dev.selenium.bidirectional.webdriver_bidi;
import dev.selenium.BaseTest;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.bidi.module.Input;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.interactions.Actions;
class ActionsTest extends BaseTest {
private Input input;
private String windowHandle;
@BeforeEach
public void setup() {
FirefoxOptions options = new FirefoxOptions();
options.setCapability("webSocketUrl", true);
driver = new FirefoxDriver(options);
windowHandle = driver.getWindowHandle();
input = new Input(driver);
}
@Test
void canPerformInputActions() {
driver.get("https://www.selenium.dev/selenium/web/formSelectionPage.html");
List<WebElement> options = driver.findElements(By.tagName("option"));
Actions actions = new Actions(driver);
Actions selectThreeOptions =
actions.click(options.get(1)).keyDown(Keys.SHIFT).click(options.get(3)).keyUp(Keys.SHIFT);
input.perform(windowHandle, selectThreeOptions.getSequences());
WebElement showButton = driver.findElement(By.name("showselected"));
showButton.click();
WebElement resultElement = driver.findElement(By.id("result"));
Assertions.assertTrue(resultElement.getText().contains("roquefort parmigiano cheddar"));
}
@Test
void canPerformReleaseAction() {
driver.get("https://www.selenium.dev/selenium/web/bidi/release_action.html");
WebElement inputTextBox = driver.findElement(By.id("keys"));
Actions sendLowercase =
new Actions(driver).keyDown(inputTextBox, "a").keyDown(inputTextBox, "b");
input.perform(windowHandle, sendLowercase.getSequences());
((JavascriptExecutor) driver).executeScript("resetEvents()");
input.release(windowHandle);
List<Map<String, Object>> events =
(List<Map<String, Object>>)
((JavascriptExecutor) driver).executeScript("return allEvents.events");
Assertions.assertEquals("KeyB", events.get(0).get("code"));
Assertions.assertEquals("KeyA", events.get(1).get("code"));
}
}
const actions = driver.actions().click(options[1]).keyDown(Key.SHIFT).click(options[3]).keyUp(Key.SHIFT).getSequences()
await input.perform(browsingContextId, actions)
Show full example
const assert = require("assert")
const firefox = require('selenium-webdriver/firefox')
const {By, Key, Builder} = require("selenium-webdriver")
const Input = require('selenium-webdriver/bidi/input')
describe('Input module', function () {
let driver
beforeEach(async function () {
driver = new Builder()
.forBrowser('firefox')
.setFirefoxOptions(new firefox.Options().enableBidi())
.build()
})
afterEach(async function () {
await driver.quit()
})
it('can perform input action', async function () {
const browsingContextId = await driver.getWindowHandle()
const input = await Input(driver)
await driver.get('https://www.selenium.dev/selenium/web/formSelectionPage.html')
let options = await driver.findElements(By.tagName('option'))
const actions = driver.actions().click(options[1]).keyDown(Key.SHIFT).click(options[3]).keyUp(Key.SHIFT).getSequences()
await input.perform(browsingContextId, actions)
let showButton = await driver.findElement(By.name('showselected'))
showButton.click()
let resultElement = await driver.findElement(By.id('result'))
await resultElement.getText().then(function (text) {
assert(text.includes('oquefort parmigiano cheddar'))
})
})
it('can execute release in browsing context', async function () {
const browsingContextId = await driver.getWindowHandle()
const input = await Input(driver)
await driver.get('https://www.selenium.dev/selenium/web/bidi/release_action.html')
let inputTextBox = await driver.findElement(By.id('keys'))
await driver.executeScript('arguments[0].focus()', inputTextBox)
const actions = driver.actions().keyDown('a').keyDown('b').getSequences()
await input.perform(browsingContextId, actions)
await driver.executeScript('resetEvents()')
await input.release(browsingContextId)
const events = await driver.executeScript('return allEvents.events')
assert.strictEqual(events[0].code, 'KeyB')
assert.strictEqual(events[1].code, 'KeyA')
})
})
Release Actions
Actions sendLowercase =
new Actions(driver).keyDown(inputTextBox, "a").keyDown(inputTextBox, "b");
input.perform(windowHandle, sendLowercase.getSequences());
((JavascriptExecutor) driver).executeScript("resetEvents()");
input.release(windowHandle);
Show full example
package dev.selenium.bidirectional.webdriver_bidi;
import dev.selenium.BaseTest;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.bidi.module.Input;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.interactions.Actions;
class ActionsTest extends BaseTest {
private Input input;
private String windowHandle;
@BeforeEach
public void setup() {
FirefoxOptions options = new FirefoxOptions();
options.setCapability("webSocketUrl", true);
driver = new FirefoxDriver(options);
windowHandle = driver.getWindowHandle();
input = new Input(driver);
}
@Test
void canPerformInputActions() {
driver.get("https://www.selenium.dev/selenium/web/formSelectionPage.html");
List<WebElement> options = driver.findElements(By.tagName("option"));
Actions actions = new Actions(driver);
Actions selectThreeOptions =
actions.click(options.get(1)).keyDown(Keys.SHIFT).click(options.get(3)).keyUp(Keys.SHIFT);
input.perform(windowHandle, selectThreeOptions.getSequences());
WebElement showButton = driver.findElement(By.name("showselected"));
showButton.click();
WebElement resultElement = driver.findElement(By.id("result"));
Assertions.assertTrue(resultElement.getText().contains("roquefort parmigiano cheddar"));
}
@Test
void canPerformReleaseAction() {
driver.get("https://www.selenium.dev/selenium/web/bidi/release_action.html");
WebElement inputTextBox = driver.findElement(By.id("keys"));
Actions sendLowercase =
new Actions(driver).keyDown(inputTextBox, "a").keyDown(inputTextBox, "b");
input.perform(windowHandle, sendLowercase.getSequences());
((JavascriptExecutor) driver).executeScript("resetEvents()");
input.release(windowHandle);
List<Map<String, Object>> events =
(List<Map<String, Object>>)
((JavascriptExecutor) driver).executeScript("return allEvents.events");
Assertions.assertEquals("KeyB", events.get(0).get("code"));
Assertions.assertEquals("KeyA", events.get(1).get("code"));
}
}
await input.release(browsingContextId)
Show full example
const assert = require("assert")
const firefox = require('selenium-webdriver/firefox')
const {By, Key, Builder} = require("selenium-webdriver")
const Input = require('selenium-webdriver/bidi/input')
describe('Input module', function () {
let driver
beforeEach(async function () {
driver = new Builder()
.forBrowser('firefox')
.setFirefoxOptions(new firefox.Options().enableBidi())
.build()
})
afterEach(async function () {
await driver.quit()
})
it('can perform input action', async function () {
const browsingContextId = await driver.getWindowHandle()
const input = await Input(driver)
await driver.get('https://www.selenium.dev/selenium/web/formSelectionPage.html')
let options = await driver.findElements(By.tagName('option'))
const actions = driver.actions().click(options[1]).keyDown(Key.SHIFT).click(options[3]).keyUp(Key.SHIFT).getSequences()
await input.perform(browsingContextId, actions)
let showButton = await driver.findElement(By.name('showselected'))
showButton.click()
let resultElement = await driver.findElement(By.id('result'))
await resultElement.getText().then(function (text) {
assert(text.includes('oquefort parmigiano cheddar'))
})
})
it('can execute release in browsing context', async function () {
const browsingContextId = await driver.getWindowHandle()
const input = await Input(driver)
await driver.get('https://www.selenium.dev/selenium/web/bidi/release_action.html')
let inputTextBox = await driver.findElement(By.id('keys'))
await driver.executeScript('arguments[0].focus()', inputTextBox)
const actions = driver.actions().keyDown('a').keyDown('b').getSequences()
await input.perform(browsingContextId, actions)
await driver.executeScript('resetEvents()')
await input.release(browsingContextId)
const events = await driver.executeScript('return allEvents.events')
assert.strictEqual(events[0].code, 'KeyB')
assert.strictEqual(events[1].code, 'KeyA')
})
})