1 package com.atlassian.selenium;
2
3 import com.atlassian.webtest.ui.keys.KeyEventType;
4
5 import java.util.Set;
6
7 import static com.google.common.base.Preconditions.checkNotNull;
8
9
10
11
12
13
14 public final class SeleniumKeyHandler extends AbstractSeleniumDriver
15 {
16 private final String locator;
17 private final Set<KeyEventType> keyEvents;
18 private final boolean reset;
19 private final SeleniumTagInspector tagInspector;
20
21 public SeleniumKeyHandler(SeleniumClient client, String locator, Set<KeyEventType> keyEvents, boolean reset)
22 {
23 super(client);
24 this.locator = checkNotNull(locator, "locator");
25 this.keyEvents = checkNotNull(keyEvents, "keyEvents");
26 this.reset = checkNotNull(reset, "reset");
27 this.tagInspector = new SeleniumTagInspector(client);
28 }
29
30 public void typeWithFullKeyEvents(String text)
31 {
32 client.focus(locator);
33 if (reset)
34 {
35 client.type(locator, "");
36 }
37
38 char[] chars = text.toCharArray();
39 StringBuilder typedTo = new StringBuilder();
40 if(!reset && tagInspector.isInput(locator))
41 {
42 typedTo.append(client.getValue(locator));
43 }
44 for (char aChar : chars)
45 {
46 if (Browser.IE.equals(client.getBrowser()))
47 {
48 typedTo.append(aChar);
49 client.type(locator, typedTo.toString());
50 }
51 client.simulateKeyPressForCharacter(locator, aChar, keyEvents);
52 }
53 }
54
55
56 }