Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# 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, "")