"Fossies" - the Fresh Open Source Software Archive 
Member "selenium-selenium-4.8.1/py/test/selenium/webdriver/common/select_class_tests.py" (17 Feb 2023, 12637 Bytes) of package /linux/www/selenium-selenium-4.8.1.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the last
Fossies "Diffs" side-by-side code changes report for "select_class_tests.py":
4.5.0_vs_4.6.0.
1 # Licensed to the Software Freedom Conservancy (SFC) under one
2 # or more contributor license agreements. See the NOTICE file
3 # distributed with this work for additional information
4 # regarding copyright ownership. The SFC licenses this file
5 # to you under the Apache License, Version 2.0 (the
6 # "License"); you may not use this file except in compliance
7 # with the License. You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing,
12 # software distributed under the License is distributed on an
13 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 # KIND, either express or implied. See the License for the
15 # specific language governing permissions and limitations
16 # under the License.
17
18 import pytest
19
20 from selenium.common.exceptions import NoSuchElementException
21 from selenium.common.exceptions import UnexpectedTagNameException
22 from selenium.webdriver.common.by import By
23 from selenium.webdriver.support.ui import Select
24
25 disabledSelect = {"name": "no-select", "values": ["Foo"]}
26 disabledSingleSelect = {"name": "single_disabled", "values": ["Enabled", "Disabled"]}
27 disabledMultiSelect = {"name": "multi_disabled", "values": ["Enabled", "Disabled"]}
28 singleSelectValues1 = {
29 "name": "selectomatic",
30 "values": ["One", "Two", "Four", "Still learning how to count, apparently"],
31 }
32 singleSelectValues2 = {"name": "redirect", "values": ["One", "Two"]}
33 singleSelectValuesWithSpaces = {
34 "name": "select_with_spaces",
35 "values": ["One", "Two", "Four", "Still learning how to count, apparently"],
36 }
37 multiSelectValues1 = {"name": "multi", "values": ["Eggs", "Ham", "Sausages", "Onion gravy"]}
38 multiSelectValues2 = {"name": "select_empty_multiple", "values": ["select_1", "select_2", "select_3", "select_4"]}
39
40
41 def test_select_by_index_single(driver, pages):
42 pages.load("formPage.html")
43
44 for select in [singleSelectValues1]:
45 sel = Select(driver.find_element(By.NAME, select["name"]))
46 for x in range(len(select["values"])):
47 sel.select_by_index(x)
48 assert sel.first_selected_option.text == select["values"][x]
49
50
51 def test_raises_exception_select_by_index_single_disabled(driver, pages):
52 pages.load("formPage.html")
53 sel = Select(driver.find_element(By.NAME, disabledSingleSelect["name"]))
54 with pytest.raises(NotImplementedError):
55 sel.select_by_index(1)
56
57
58 def test_select_by_value_single(driver, pages):
59 pages.load("formPage.html")
60 for select in [singleSelectValues1]:
61 sel = Select(driver.find_element(By.NAME, select["name"]))
62 for x in range(len(select["values"])):
63 sel.select_by_value(select["values"][x].lower())
64 assert sel.first_selected_option.text == select["values"][x]
65
66
67 def test_raises_exception_select_by_value_single_disabled(driver, pages):
68 pages.load("formPage.html")
69 sel = Select(driver.find_element(By.NAME, disabledSingleSelect["name"]))
70 with pytest.raises(NotImplementedError):
71 sel.select_by_value(disabledSingleSelect["values"][1].lower())
72
73
74 def test_select_by_visible_text_single(driver, pages):
75 pages.load("formPage.html")
76
77 for select in [singleSelectValues1]:
78 sel = Select(driver.find_element(By.NAME, select["name"]))
79 for x in range(len(select["values"])):
80 print(select["values"][x])
81 sel.select_by_visible_text(select["values"][x])
82 assert sel.first_selected_option.text == select["values"][x]
83
84
85 def test_raises_exception_select_by_text_single_disabled(driver, pages):
86 pages.load("formPage.html")
87 sel = Select(driver.find_element(By.NAME, disabledSingleSelect["name"]))
88 with pytest.raises(NotImplementedError):
89 sel.select_by_visible_text(disabledSingleSelect["values"][1])
90
91
92 def test_select_by_index_multiple(driver, pages):
93 pages.load("formPage.html")
94
95 for select in [multiSelectValues1, multiSelectValues2]:
96 sel = Select(driver.find_element(By.NAME, select["name"]))
97 sel.deselect_all()
98 for x in range(len(select["values"])):
99 sel.select_by_index(x)
100 selected = sel.all_selected_options
101 assert len(selected) == x + 1
102 for j in range(len(selected)):
103 assert selected[j].text == select["values"][j]
104
105
106 def test_raises_exception_select_by_index_multiple_disabled(driver, pages):
107 pages.load("formPage.html")
108
109 sel = Select(driver.find_element(By.NAME, disabledMultiSelect["name"]))
110 with pytest.raises(NotImplementedError):
111 sel.select_by_index(1)
112
113
114 def test_select_by_value_multiple(driver, pages):
115 pages.load("formPage.html")
116
117 for select in [multiSelectValues1, multiSelectValues2]:
118 sel = Select(driver.find_element(By.NAME, select["name"]))
119 sel.deselect_all()
120 for x in range(len(select["values"])):
121 sel.select_by_value(select["values"][x].lower())
122 selected = sel.all_selected_options
123 assert len(selected) == x + 1
124 for j in range(len(selected)):
125 assert selected[j].text == select["values"][j]
126
127
128 def test_raises_exception_select_by_value_multiple_disabled(driver, pages):
129 pages.load("formPage.html")
130
131 sel = Select(driver.find_element(By.NAME, disabledMultiSelect["name"]))
132 with pytest.raises(NotImplementedError):
133 sel.select_by_value(disabledMultiSelect["values"][1].lower())
134
135
136 def test_select_by_visible_text_multiple(driver, pages):
137 pages.load("formPage.html")
138
139 for select in [multiSelectValues1, multiSelectValues2]:
140 sel = Select(driver.find_element(By.NAME, select["name"]))
141 sel.deselect_all()
142 for x in range(len(select["values"])):
143 sel.select_by_visible_text(select["values"][x])
144 selected = sel.all_selected_options
145 assert len(selected) == x + 1
146 for j in range(len(selected)):
147 assert selected[j].text == select["values"][j]
148
149
150 def test_raises_exception_select_by_text_multiple_disabled(driver, pages):
151 pages.load("formPage.html")
152
153 sel = Select(driver.find_element(By.NAME, disabledMultiSelect["name"]))
154 with pytest.raises(NotImplementedError):
155 sel.select_by_visible_text(disabledMultiSelect["values"][1])
156
157
158 def test_deselect_all_single(driver, pages):
159 pages.load("formPage.html")
160 for select in [singleSelectValues1, singleSelectValues2]:
161 with pytest.raises(NotImplementedError):
162 Select(driver.find_element(By.NAME, select["name"])).deselect_all()
163
164
165 def test_deselect_all_multiple(driver, pages):
166 pages.load("formPage.html")
167 for select in [multiSelectValues1, multiSelectValues2]:
168 sel = Select(driver.find_element(By.NAME, select["name"]))
169 sel.deselect_all()
170 assert len(sel.all_selected_options) == 0
171
172
173 def test_deselect_by_index_single(driver, pages):
174 pages.load("formPage.html")
175 for select in [singleSelectValues1, singleSelectValues2]:
176 with pytest.raises(NotImplementedError):
177 Select(driver.find_element(By.NAME, select["name"])).deselect_by_index(0)
178
179
180 def test_deselect_by_value_single(driver, pages):
181 pages.load("formPage.html")
182 for select in [singleSelectValues1, singleSelectValues2]:
183 with pytest.raises(NotImplementedError):
184 Select(driver.find_element(By.NAME, select["name"])).deselect_by_value(select["values"][0].lower())
185
186
187 def test_deselect_by_visible_text_single(driver, pages):
188 pages.load("formPage.html")
189 for select in [singleSelectValues1, singleSelectValues2]:
190 with pytest.raises(NotImplementedError):
191 Select(driver.find_element(By.NAME, select["name"])).deselect_by_visible_text(select["values"][0])
192
193
194 def test_deselect_by_index_multiple(driver, pages):
195 pages.load("formPage.html")
196 for select in [multiSelectValues1, multiSelectValues2]:
197 sel = Select(driver.find_element(By.NAME, select["name"]))
198 sel.deselect_all()
199 sel.select_by_index(0)
200 sel.select_by_index(1)
201 sel.select_by_index(2)
202 sel.select_by_index(3)
203 sel.deselect_by_index(1)
204 sel.deselect_by_index(3)
205 selected = sel.all_selected_options
206 assert len(selected) == 2
207 assert selected[0].text == select["values"][0]
208 assert selected[1].text == select["values"][2]
209
210
211 def test_deselect_by_value_multiple(driver, pages):
212 pages.load("formPage.html")
213 for select in [multiSelectValues1, multiSelectValues2]:
214 sel = Select(driver.find_element(By.NAME, select["name"]))
215 sel.deselect_all()
216 sel.select_by_index(0)
217 sel.select_by_index(1)
218 sel.select_by_index(2)
219 sel.select_by_index(3)
220 sel.deselect_by_value(select["values"][1].lower())
221 sel.deselect_by_value(select["values"][3].lower())
222 selected = sel.all_selected_options
223 assert len(selected) == 2
224 assert selected[0].text == select["values"][0]
225 assert selected[1].text == select["values"][2]
226
227
228 def test_deselect_by_visible_text_multiple(driver, pages):
229 pages.load("formPage.html")
230 for select in [multiSelectValues1, multiSelectValues2]:
231 sel = Select(driver.find_element(By.NAME, select["name"]))
232 sel.deselect_all()
233 sel.select_by_index(0)
234 sel.select_by_index(1)
235 sel.select_by_index(2)
236 sel.select_by_index(3)
237 sel.deselect_by_visible_text(select["values"][1])
238 sel.deselect_by_visible_text(select["values"][3])
239 selected = sel.all_selected_options
240 assert len(selected) == 2
241 assert selected[0].text == select["values"][0]
242 assert selected[1].text == select["values"][2]
243
244
245 def test_get_options(driver, pages):
246 pages.load("formPage.html")
247 for select in [singleSelectValues1, singleSelectValues2, multiSelectValues1, multiSelectValues2]:
248 opts = Select(driver.find_element(By.NAME, select["name"])).options
249 assert len(opts) == len(select["values"])
250 for i in range(len(opts)):
251 assert opts[i].text == select["values"][i]
252
253
254 def test_get_all_selected_options_single(driver, pages):
255 pages.load("formPage.html")
256 for select in [singleSelectValues1, singleSelectValues2, disabledSelect]:
257 opts = Select(driver.find_element(By.NAME, select["name"])).all_selected_options
258 assert len(opts) == 1
259 assert opts[0].text == select["values"][0]
260
261
262 def test_get_all_selected_options_multiple(driver, pages):
263 pages.load("formPage.html")
264 opts = Select(driver.find_element(By.NAME, multiSelectValues1["name"])).all_selected_options
265 assert len(opts) == 2
266 assert opts[0].text, multiSelectValues1["values"][0]
267 assert opts[1].text, multiSelectValues1["values"][2]
268 opts = Select(driver.find_element(By.NAME, multiSelectValues2["name"])).all_selected_options
269 assert len(opts) == 0
270
271
272 def test_get_first_selected_option_single(driver, pages):
273 pages.load("formPage.html")
274 for select in [singleSelectValues1, singleSelectValues2]:
275 opt = Select(driver.find_element(By.NAME, select["name"])).first_selected_option
276 assert opt.text == select["values"][0]
277
278
279 def test_get_first_selected_option_multiple(driver, pages):
280 pages.load("formPage.html")
281 opt = Select(driver.find_element(By.NAME, multiSelectValues1["name"])).first_selected_option
282 assert opt.text == multiSelectValues1["values"][0]
283 opt = Select(driver.find_element(By.NAME, multiSelectValues2["name"])).all_selected_options
284 assert len(opt) == 0
285
286
287 def test_raises_exception_for_invalid_tag_name(driver, pages):
288 pages.load("formPage.html")
289 with pytest.raises(UnexpectedTagNameException):
290 Select(driver.find_element(By.TAG_NAME, "div"))
291
292
293 def test_deselect_by_index_non_existent(driver, pages):
294 pages.load("formPage.html")
295 for select in [multiSelectValues1, multiSelectValues2]:
296 with pytest.raises(NoSuchElementException):
297 Select(driver.find_element(By.NAME, select["name"])).deselect_by_index(10)
298
299
300 def test_deselect_by_value_non_existent(driver, pages):
301 pages.load("formPage.html")
302 for select in [multiSelectValues1, multiSelectValues2]:
303 with pytest.raises(NoSuchElementException):
304 Select(driver.find_element(By.NAME, select["name"])).deselect_by_value("not there")
305
306
307 def test_deselect_by_text_non_existent(driver, pages):
308 pages.load("formPage.html")
309 for select in [multiSelectValues1, multiSelectValues2]:
310 with pytest.raises(NoSuchElementException):
311 Select(driver.find_element(By.NAME, select["name"])).deselect_by_visible_text("not there")