test_switch_frame.py (3629B)
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.by import By 6 from marionette_driver.errors import InvalidArgumentException, NoSuchFrameException 7 8 from marionette_harness import MarionetteTestCase 9 10 11 class TestSwitchFrame(MarionetteTestCase): 12 def setUp(self): 13 super(TestSwitchFrame, self).setUp() 14 15 test_html = self.marionette.absolute_url("frameset.html") 16 self.marionette.navigate(test_html) 17 18 def test_exceptions(self): 19 frame = self.marionette.find_element(By.CSS_SELECTOR, ":root") 20 with self.assertRaises(NoSuchFrameException): 21 self.marionette.switch_to_frame(frame) 22 23 with self.assertRaises(InvalidArgumentException): 24 self.marionette.switch_to_frame(-1) 25 26 def test_by_frame_element(self): 27 frame = self.marionette.find_element(By.NAME, "third") 28 self.marionette.switch_to_frame(frame) 29 30 element = self.marionette.find_element(By.ID, "email") 31 self.assertEqual(element.get_attribute("type"), "email") 32 33 def test_by_index(self): 34 self.marionette.switch_to_frame(2) 35 36 element = self.marionette.find_element(By.ID, "email") 37 self.assertEqual(element.get_attribute("type"), "email") 38 39 def test_back_to_top_frame(self): 40 frame1 = self.marionette.find_element(By.ID, "sixth") 41 self.marionette.switch_to_frame(frame1) 42 self.marionette.switch_to_frame(0) 43 44 self.marionette.find_element(By.ID, "testDiv") 45 46 self.marionette.switch_to_frame() 47 frame = self.marionette.find_element(By.ID, "sixth") 48 self.assertEqual(frame, frame1) 49 50 51 class TestSwitchParentFrame(MarionetteTestCase): 52 def test_iframe(self): 53 frame_html = self.marionette.absolute_url("test_iframe.html") 54 self.marionette.navigate(frame_html) 55 56 frame = self.marionette.find_element(By.ID, "test_iframe") 57 self.marionette.switch_to_frame(frame) 58 self.marionette.find_element(By.ID, "testDiv") 59 60 self.marionette.switch_to_parent_frame() 61 62 self.marionette.find_element(By.ID, "test_iframe") 63 64 def test_frameset(self): 65 frame_html = self.marionette.absolute_url("frameset.html") 66 self.marionette.navigate(frame_html) 67 frame = self.marionette.find_element(By.NAME, "third") 68 self.marionette.switch_to_frame(frame) 69 70 # If we don't find the following element we aren't on the right page 71 self.marionette.find_element(By.ID, "checky") 72 73 self.marionette.switch_to_parent_frame() 74 self.marionette.find_element(By.NAME, "third") 75 76 def test_from_default_context_is_a_noop(self): 77 formpage = self.marionette.absolute_url("formPage.html") 78 self.marionette.navigate(formpage) 79 self.marionette.find_element(By.ID, "checky") 80 81 self.marionette.switch_to_parent_frame() 82 self.marionette.find_element(By.ID, "checky") 83 84 def test_from_second_level(self): 85 frame_html = self.marionette.absolute_url("frameset.html") 86 self.marionette.navigate(frame_html) 87 frame = self.marionette.find_element(By.NAME, "fourth") 88 self.marionette.switch_to_frame(frame) 89 90 second_level = self.marionette.find_element(By.NAME, "child1") 91 self.marionette.switch_to_frame(second_level) 92 self.marionette.find_element(By.NAME, "myCheckBox") 93 94 self.marionette.switch_to_parent_frame() 95 96 second_level = self.marionette.find_element(By.NAME, "child1")