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