test_actions_wheel.py (2641B)
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 marionette_driver import By 6 from marionette_harness import MarionetteTestCase, parameterized 7 8 9 class BaseWheelAction(MarionetteTestCase): 10 def setUp(self): 11 super(BaseWheelAction, self).setUp() 12 13 self.test_page = self.marionette.absolute_url("actions_scroll.html") 14 self.marionette.navigate(self.test_page) 15 16 self.wheel_chain = self.marionette.actions.sequence("wheel", "wheel_id") 17 18 def tearDown(self): 19 self.marionette.actions.release() 20 21 super(BaseWheelAction, self).tearDown() 22 23 def get_events(self): 24 return self.marionette.execute_script("return allEvents.events;", sandbox=None) 25 26 27 class TestWheelAction(BaseWheelAction): 28 def test_scroll_not_scrollable(self): 29 target = self.marionette.find_element(By.ID, "not-scrollable") 30 31 self.wheel_chain.scroll(0, 0, 5, 10, origin=target, duration=0).perform() 32 33 events = self.get_events() 34 self.assertEqual(len(events), 1) 35 self.assertEqual(events[0]["type"], "wheel") 36 self.assertEqual(events[0]["deltaX"], 5) 37 self.assertEqual(events[0]["deltaY"], 10) 38 self.assertEqual(events[0]["deltaZ"], 0) 39 self.assertEqual(events[0]["target"], "not-scrollable-content") 40 41 def test_scroll_scrollable(self): 42 target = self.marionette.find_element(By.ID, "scrollable") 43 self.wheel_chain.scroll(0, 0, 5, 10, origin=target).perform() 44 45 events = self.get_events() 46 self.assertEqual(len(events), 1) 47 self.assertEqual(events[0]["type"], "wheel") 48 self.assertEqual(events[0]["deltaX"], 5) 49 self.assertEqual(events[0]["deltaY"], 10) 50 self.assertEqual(events[0]["deltaZ"], 0) 51 self.assertEqual(events[0]["target"], "scrollable-content") 52 53 def test_scroll_iframe_scrollable(self): 54 iframe = self.marionette.find_element(By.ID, "iframe") 55 self.marionette.switch_to_frame(iframe) 56 57 target = self.marionette.find_element(By.ID, "iframeContent") 58 self.wheel_chain.scroll(0, 0, 5, 10, origin=target).perform() 59 60 self.marionette.switch_to_frame() 61 62 events = self.get_events() 63 self.assertEqual(len(events), 1) 64 self.assertEqual(events[0]["type"], "wheel") 65 self.assertEqual(events[0]["deltaX"], 5) 66 self.assertEqual(events[0]["deltaY"], 10) 67 self.assertEqual(events[0]["deltaZ"], 0) 68 self.assertEqual(events[0]["target"], "iframeContent")