下面列出了怎么用org.openqa.selenium.interactions.KeyInput的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void testLowLevelKeys() {
wait.until(ExpectedConditions.presenceOfElementLocated(loginScreen)).click();
WebElement usernameField = driver.findElement(username);
usernameField.click();
KeyInput keyboard = new KeyInput("keyboard");
Sequence sendKeys = new Sequence(keyboard, 0);
sendKeys.addAction(keyboard.createKeyDown(Keys.SHIFT.getCodePoint()));
sendKeys.addAction(keyboard.createKeyDown("f".codePointAt(0)));
sendKeys.addAction(keyboard.createKeyUp("f".codePointAt(0)));
sendKeys.addAction(keyboard.createKeyUp(Keys.SHIFT.getCodePoint()));
sendKeys.addAction(keyboard.createKeyDown("o".codePointAt(0)));
sendKeys.addAction(keyboard.createKeyUp("o".codePointAt(0)));
sendKeys.addAction(keyboard.createKeyDown("o".codePointAt(0)));
sendKeys.addAction(keyboard.createKeyUp("o".codePointAt(0)));
driver.perform(Arrays.asList(sendKeys));
Assert.assertEquals("Foo", usernameField.getText());
}
@Override
protected Map<String, ?> amendParameters(String name, Map<String, ?> parameters) {
// This blocks parent constructor from undesirable parameters amending
switch (name) {
case SEND_KEYS_TO_ACTIVE_ELEMENT:
Object rawValue = parameters.get("value");
//noinspection unchecked
Stream<CharSequence> source = (rawValue instanceof Collection)
? ((Collection<CharSequence>) rawValue).stream()
: Stream.of((CharSequence[]) rawValue);
String text = source
.flatMap(Stream::of)
.collect(Collectors.joining());
final KeyInput keyboard = new KeyInput("keyboard");
Sequence sequence = new Sequence(keyboard, 0);
for (int i = 0; i < text.length(); ++i) {
sequence.addAction(keyboard.createKeyDown(text.charAt(i)))
.addAction(keyboard.createKeyUp(text.charAt(i)));
}
return ImmutableMap.<String, Object>builder()
.put("actions", ImmutableList.of(sequence.toJson()))
.build();
case SEND_KEYS_TO_ELEMENT:
case SET_TIMEOUT:
return super.amendParameters(name, parameters);
default:
return parameters;
}
}