test_expected.py (9202B)
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 import expected 8 from marionette_driver.by import By 9 10 from marionette_harness import marionette_test 11 12 13 def inline(doc): 14 return "data:text/html;charset=utf-8,{}".format(quote(doc)) 15 16 17 static_element = inline("""<p>foo</p>""") 18 static_elements = static_element + static_element 19 20 remove_element_by_tag_name = """var el = document.getElementsByTagName('{}')[0]; 21 document.getElementsByTagName("body")[0].remove(el);""" 22 23 hidden_element = inline("<p style='display: none'>hidden</p>") 24 25 selected_element = inline("<option selected>selected</option>") 26 unselected_element = inline("<option>unselected</option>") 27 28 enabled_element = inline("<input>") 29 disabled_element = inline("<input disabled>") 30 31 32 def no_such_element(marionette): 33 return marionette.find_element(By.ID, "nosuchelement") 34 35 36 def no_such_elements(marionette): 37 return marionette.find_elements(By.ID, "nosuchelement") 38 39 40 def p(marionette): 41 return marionette.find_element(By.TAG_NAME, "p") 42 43 44 def ps(marionette): 45 return marionette.find_elements(By.TAG_NAME, "p") 46 47 48 class TestExpected(marionette_test.MarionetteTestCase): 49 def test_element_present_func(self): 50 self.marionette.navigate(static_element) 51 el = expected.element_present(p)(self.marionette) 52 self.assertIsNotNone(el) 53 54 def test_element_present_locator(self): 55 self.marionette.navigate(static_element) 56 el = expected.element_present(By.TAG_NAME, "p")(self.marionette) 57 self.assertIsNotNone(el) 58 59 def test_element_present_not_present(self): 60 r = expected.element_present(no_such_element)(self.marionette) 61 self.assertIsInstance(r, bool) 62 self.assertFalse(r) 63 64 def test_element_not_present_func(self): 65 r = expected.element_not_present(no_such_element)(self.marionette) 66 self.assertIsInstance(r, bool) 67 self.assertTrue(r) 68 69 def test_element_not_present_locator(self): 70 r = expected.element_not_present(By.ID, "nosuchelement")(self.marionette) 71 self.assertIsInstance(r, bool) 72 self.assertTrue(r) 73 74 def test_element_not_present_is_present(self): 75 self.marionette.navigate(static_element) 76 r = expected.element_not_present(p)(self.marionette) 77 self.assertIsInstance(r, bool) 78 self.assertFalse(r) 79 80 def test_element_stale(self): 81 self.marionette.navigate(static_element) 82 el = self.marionette.find_element(By.TAG_NAME, "p") 83 self.assertIsNotNone(el) 84 self.marionette.execute_script(remove_element_by_tag_name.format("p")) 85 r = expected.element_stale(el)(self.marionette) 86 self.assertTrue(r) 87 88 def test_element_stale_is_not_stale(self): 89 self.marionette.navigate(static_element) 90 el = self.marionette.find_element(By.TAG_NAME, "p") 91 r = expected.element_stale(el)(self.marionette) 92 self.assertFalse(r) 93 94 def test_elements_present_func(self): 95 self.marionette.navigate(static_elements) 96 els = expected.elements_present(ps)(self.marionette) 97 self.assertEqual(len(els), 2) 98 99 def test_elements_present_locator(self): 100 self.marionette.navigate(static_elements) 101 els = expected.elements_present(By.TAG_NAME, "p")(self.marionette) 102 self.assertEqual(len(els), 2) 103 104 def test_elements_present_not_present(self): 105 r = expected.elements_present(no_such_elements)(self.marionette) 106 self.assertEqual(r, []) 107 108 def test_elements_not_present_func(self): 109 r = expected.element_not_present(no_such_elements)(self.marionette) 110 self.assertIsInstance(r, bool) 111 self.assertTrue(r) 112 113 def test_elements_not_present_locator(self): 114 r = expected.element_not_present(By.ID, "nosuchelement")(self.marionette) 115 self.assertIsInstance(r, bool) 116 self.assertTrue(r) 117 118 def test_elements_not_present_is_present(self): 119 self.marionette.navigate(static_elements) 120 r = expected.elements_not_present(ps)(self.marionette) 121 self.assertIsInstance(r, bool) 122 self.assertFalse(r) 123 124 def test_element_displayed(self): 125 self.marionette.navigate(static_element) 126 el = self.marionette.find_element(By.TAG_NAME, "p") 127 visible = expected.element_displayed(el)(self.marionette) 128 self.assertTrue(visible) 129 130 def test_element_displayed_locator(self): 131 self.marionette.navigate(static_element) 132 visible = expected.element_displayed(By.TAG_NAME, "p")(self.marionette) 133 self.assertTrue(visible) 134 135 def test_element_displayed_when_hidden(self): 136 self.marionette.navigate(hidden_element) 137 el = self.marionette.find_element(By.TAG_NAME, "p") 138 visible = expected.element_displayed(el)(self.marionette) 139 self.assertFalse(visible) 140 141 def test_element_displayed_when_hidden_locator(self): 142 self.marionette.navigate(hidden_element) 143 visible = expected.element_displayed(By.TAG_NAME, "p")(self.marionette) 144 self.assertFalse(visible) 145 146 def test_element_displayed_when_not_present(self): 147 self.marionette.navigate("about:blank") 148 visible = expected.element_displayed(By.TAG_NAME, "p")(self.marionette) 149 self.assertFalse(visible) 150 151 def test_element_displayed_when_stale_element(self): 152 self.marionette.navigate(static_element) 153 el = self.marionette.find_element(By.TAG_NAME, "p") 154 self.marionette.execute_script("arguments[0].remove()", [el]) 155 missing = expected.element_displayed(el)(self.marionette) 156 self.assertFalse(missing) 157 158 def test_element_not_displayed(self): 159 self.marionette.navigate(hidden_element) 160 el = self.marionette.find_element(By.TAG_NAME, "p") 161 hidden = expected.element_not_displayed(el)(self.marionette) 162 self.assertTrue(hidden) 163 164 def test_element_not_displayed_locator(self): 165 self.marionette.navigate(hidden_element) 166 hidden = expected.element_not_displayed(By.TAG_NAME, "p")(self.marionette) 167 self.assertTrue(hidden) 168 169 def test_element_not_displayed_when_visible(self): 170 self.marionette.navigate(static_element) 171 el = self.marionette.find_element(By.TAG_NAME, "p") 172 hidden = expected.element_not_displayed(el)(self.marionette) 173 self.assertFalse(hidden) 174 175 def test_element_not_displayed_when_visible_locator(self): 176 self.marionette.navigate(static_element) 177 hidden = expected.element_not_displayed(By.TAG_NAME, "p")(self.marionette) 178 self.assertFalse(hidden) 179 180 def test_element_not_displayed_when_stale_element(self): 181 self.marionette.navigate(static_element) 182 el = self.marionette.find_element(By.TAG_NAME, "p") 183 self.marionette.execute_script("arguments[0].remove()", [el]) 184 missing = expected.element_not_displayed(el)(self.marionette) 185 self.assertTrue(missing) 186 187 def test_element_selected(self): 188 self.marionette.navigate(selected_element) 189 el = self.marionette.find_element(By.TAG_NAME, "option") 190 selected = expected.element_selected(el)(self.marionette) 191 self.assertTrue(selected) 192 193 def test_element_selected_when_not_selected(self): 194 self.marionette.navigate(unselected_element) 195 el = self.marionette.find_element(By.TAG_NAME, "option") 196 unselected = expected.element_selected(el)(self.marionette) 197 self.assertFalse(unselected) 198 199 def test_element_not_selected(self): 200 self.marionette.navigate(unselected_element) 201 el = self.marionette.find_element(By.TAG_NAME, "option") 202 unselected = expected.element_not_selected(el)(self.marionette) 203 self.assertTrue(unselected) 204 205 def test_element_not_selected_when_selected(self): 206 self.marionette.navigate(selected_element) 207 el = self.marionette.find_element(By.TAG_NAME, "option") 208 selected = expected.element_not_selected(el)(self.marionette) 209 self.assertFalse(selected) 210 211 def test_element_enabled(self): 212 self.marionette.navigate(enabled_element) 213 el = self.marionette.find_element(By.TAG_NAME, "input") 214 enabled = expected.element_enabled(el)(self.marionette) 215 self.assertTrue(enabled) 216 217 def test_element_enabled_when_disabled(self): 218 self.marionette.navigate(disabled_element) 219 el = self.marionette.find_element(By.TAG_NAME, "input") 220 disabled = expected.element_enabled(el)(self.marionette) 221 self.assertFalse(disabled) 222 223 def test_element_not_enabled(self): 224 self.marionette.navigate(disabled_element) 225 el = self.marionette.find_element(By.TAG_NAME, "input") 226 disabled = expected.element_not_enabled(el)(self.marionette) 227 self.assertTrue(disabled) 228 229 def test_element_not_enabled_when_enabled(self): 230 self.marionette.navigate(enabled_element) 231 el = self.marionette.find_element(By.TAG_NAME, "input") 232 enabled = expected.element_not_enabled(el)(self.marionette) 233 self.assertFalse(enabled)