1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from six.moves.urllib.parse import quote
from marionette_driver.by import By
from marionette_driver.keys import Keys
from marionette_harness import MarionetteTestCase, WindowManagerMixin
def inline(doc):
return "data:text/html;charset=utf-8,{}".format(quote(doc))
class TestKeyActions(WindowManagerMixin, MarionetteTestCase):
def setUp(self):
super(TestKeyActions, self).setUp()
self.key_chain = self.marionette.actions.sequence("key", "keyboard_id")
if self.marionette.session_capabilities["platformName"] == "mac":
self.mod_key = Keys.META
else:
self.mod_key = Keys.CONTROL
test_html = self.marionette.absolute_url("keyboard.html")
self.marionette.navigate(test_html)
self.reporter_element = self.marionette.find_element(By.ID, "keyReporter")
self.reporter_element.click()
def tearDown(self):
self.marionette.actions.release()
super(TestKeyActions, self).tearDown()
@property
def key_reporter_value(self):
return self.reporter_element.get_property("value")
def test_basic_input(self):
self.key_chain.key_down("a").key_down("b").key_down("c").perform()
self.assertEqual(self.key_reporter_value, "abc")
def test_upcase_input(self):
self.key_chain.key_down(Keys.SHIFT).key_down("a").key_up(Keys.SHIFT).key_down(
"b"
).key_down("c").perform()
self.assertEqual(self.key_reporter_value, "Abc")
def test_replace_input(self):
self.key_chain.key_down("a").key_down("b").key_down("c").perform()
self.assertEqual(self.key_reporter_value, "abc")
self.key_chain.key_down(self.mod_key).key_down("a").key_up(
self.mod_key
).key_down("x").perform()
self.assertEqual(self.key_reporter_value, "x")
def test_clear_input(self):
self.key_chain.key_down("a").key_down("b").key_down("c").perform()
self.assertEqual(self.key_reporter_value, "abc")
self.key_chain.key_down(self.mod_key).key_down("a").key_down("x").perform()
self.assertEqual(self.key_reporter_value, "")
def test_input_with_wait(self):
self.key_chain.key_down("a").key_down("b").key_down("c").perform()
self.key_chain.key_down(self.mod_key).key_down("a").pause(250).key_down(
"x"
).perform()
self.assertEqual(self.key_reporter_value, "")
|