Skip to content

Commit 821ad5f

Browse files
authored
Merge pull request #370 from seleniumbase/refactor-and-update-methods
Refactor and update methods
2 parents adbbd19 + f3976e1 commit 821ad5f

File tree

9 files changed

+1768
-1748
lines changed

9 files changed

+1768
-1748
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ python -m easy_install -U pip
2626

2727
### <img src="https://cdn2.hubspot.net/hubfs/100006/images/super_square_logo_3a.png" title="SeleniumBase" height="32"> Setup a Virtual Environment: (Optional)
2828

29-
You may want to use a **Python Virtual Environment** to isolate Python dependencies between projects. (The Seleniumbase virtualenv tutorial can be found **[here](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/virtualenv_instructions.md)**, and the official virtualenv tutorial can be found **[here](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/)**.)
29+
You may want to use a **Python Virtual Environment** to isolate Python dependencies between projects. Instructions on creating one can be found **[here](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/virtualenv_instructions.md)**. (<i>Learn more about virtual environments on the official site **[here](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/)**.</i>)
3030

3131
### <img src="https://cdn2.hubspot.net/hubfs/100006/images/super_square_logo_3a.png" title="SeleniumBase" height="32"> Install ``seleniumbase``: [<img src="https://img.shields.io/badge/pypi-seleniumbase-22AAEE.svg" alt=" " />](https://pypi.python.org/pypi/seleniumbase)
3232
```bash

examples/my_first_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ class MyTestClass(BaseCase):
55

66
def test_basic(self):
77
self.open("https://xkcd.com/353/")
8-
self.assert_element('img[alt="Python"]')
98
self.assert_title("xkcd: Python")
9+
self.assert_element('img[alt="Python"]')
1010
self.click('a[rel="license"]')
1111
self.assert_text("free to copy and reuse")
1212
self.go_back()

examples/parameterized_test.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
class GoogleTestClass(BaseCase):
66

77
@parameterized.expand([
8-
["pypi", "https://pypi.org"],
9-
["wikipedia", "https://www.wikipedia.org"],
10-
["seleniumbase", "https://github.com/seleniumbase/SeleniumBase"],
8+
["pypi", "pypi.org"],
9+
["wikipedia", "wikipedia.org"],
10+
["seleniumbase", "seleniumbase/SeleniumBase"],
1111
])
12-
def test_parameterized_google_search(self, search_term, expected_url):
12+
def test_parameterized_google_search(self, search_term, expected_text):
1313
self.open('https://google.com/ncr')
1414
self.update_text('input[title="Search"]', search_term + '\n')
15-
self.assert_text(expected_url, '#search')
15+
self.assert_element('#resultStats')
16+
self.assert_text(expected_text, '#search')

help_docs/method_summary.md

Lines changed: 108 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -21,125 +21,133 @@ self.double_click(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
2121

2222
self.click_chain(selectors_list, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT, spacing=0)
2323

24-
self.is_link_text_present(link_text)
24+
self.type(selector, text, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT, retry=False)
2525

26-
self.is_partial_link_text_present(link_text)
26+
self.update_text(selector, new_value, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT, retry=False)
2727

28-
self.get_link_attribute(link_text, attribute, hard_fail)
28+
self.add_text(selector, text, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
2929

30-
self.get_partial_link_text_attribute(link_text, attribute, hard_fail)
30+
self.send_keys(selector, text, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
3131

32-
self.wait_for_link_text_present(link_text, timeout=settings.SMALL_TIMEOUT)
32+
self.submit(selector, by=By.CSS_SELECTOR)
3333

34-
self.wait_for_partial_link_text_present(link_text, timeout=settings.SMALL_TIMEOUT)
34+
self.refresh_page()
3535

36-
self.click_link_text(link_text, timeout=settings.SMALL_TIMEOUT)
36+
self.refresh()
3737

38-
self.click_link(link_text, timeout=settings.SMALL_TIMEOUT)
38+
self.get_current_url()
3939

40-
self.click_partial_link_text(partial_link_text, timeout=settings.SMALL_TIMEOUT)
40+
self.get_page_source()
4141

42-
self.get_text(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
42+
self.get_page_title()
4343

44-
self.get_attribute(selector, attribute, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
44+
self.get_title()
4545

46-
self.set_attribute(selector, attribute, value, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
46+
self.go_back()
4747

48-
self.remove_attribute(selector, attribute, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
48+
self.go_forward()
4949

50-
self.get_property_value(selector, property, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
50+
self.is_element_present(selector, by=By.CSS_SELECTOR)
5151

52-
self.refresh_page()
52+
self.is_element_visible(selector, by=By.CSS_SELECTOR)
5353

54-
self.refresh()
54+
self.is_text_visible(text, selector="html", by=By.CSS_SELECTOR)
5555

56-
self.get_current_url()
56+
self.is_link_text_visible(link_text)
5757

58-
self.get_page_source()
58+
self.is_partial_link_text_visible(partial_link_text)
5959

60-
self.get_page_title()
60+
self.is_link_text_present(link_text)
6161

62-
self.get_title()
62+
self.is_partial_link_text_present(link_text)
6363

64-
self.go_back()
64+
self.get_link_attribute(link_text, attribute, hard_fail)
6565

66-
self.go_forward()
66+
self.get_link_text_attribute(link_text, attribute, hard_fail)
6767

68-
self.get_image_url(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
68+
self.get_partial_link_text_attribute(link_text, attribute, hard_fail)
6969

70-
self.add_text(selector, text, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
70+
self.click_link_text(link_text, timeout=settings.SMALL_TIMEOUT)
7171

72-
self.send_keys(selector, text, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
72+
self.click_link(link_text, timeout=settings.SMALL_TIMEOUT)
7373

74-
self.update_text(selector, new_value, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT, retry=False)
74+
self.click_partial_link_text(partial_link_text, timeout=settings.SMALL_TIMEOUT)
7575

76-
self.type(selector, text, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT, retry=False)
76+
self.get_text(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
7777

78-
self.is_element_present(selector, by=By.CSS_SELECTOR)
78+
self.get_attribute(selector, attribute, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
7979

80-
self.is_element_visible(selector, by=By.CSS_SELECTOR)
80+
self.set_attribute(selector, attribute, value, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
8181

82-
self.is_link_text_visible(link_text)
82+
self.remove_attribute(selector, attribute, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
8383

84-
self.is_partial_link_text_visible(partial_link_text)
84+
self.get_property_value(selector, property, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
8585

86-
self.is_text_visible(text, selector="html", by=By.CSS_SELECTOR)
86+
self.get_image_url(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
8787

8888
self.find_elements(selector, by=By.CSS_SELECTOR, limit=0)
8989

9090
self.find_visible_elements(selector, by=By.CSS_SELECTOR, limit=0)
9191

9292
self.click_visible_elements(selector, by=By.CSS_SELECTOR, limit=0)
9393

94+
self.click_if_visible(selector, by=By.CSS_SELECTOR)
95+
9496
self.is_element_in_an_iframe(selector, by=By.CSS_SELECTOR)
9597

9698
self.switch_to_frame_of_element(selector, by=By.CSS_SELECTOR)
9799

98-
self.execute_script(script)
100+
self.hover_on_element(selector, by=By.CSS_SELECTOR)
99101

100-
self.set_window_size(width, height)
102+
self.hover_and_click(hover_selector, click_selector,
103+
hover_by=By.CSS_SELECTOR, click_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
101104

102-
self.maximize_window()
105+
self.hover_and_double_click(hover_selector, click_selector,
106+
hover_by=By.CSS_SELECTOR, click_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
103107

104-
self.add_css_link(css_link)
108+
self.select_option_by_text(dropdown_selector, option,
109+
dropdown_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
105110

106-
self.add_js_link(js_link)
111+
self.select_option_by_index(dropdown_selector, option,
112+
dropdown_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
107113

108-
self.add_css_style(css_style)
114+
self.select_option_by_value(dropdown_selector, option,
115+
dropdown_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
109116

110-
self.add_js_code_from_link(js_link)
117+
self.execute_script(script)
111118

112-
self.add_meta_tag(http_equiv=None, content=None)
119+
self.execute_async_script(script, timeout=settings.EXTREME_TIMEOUT)
113120

114-
self.activate_jquery()
121+
self.safe_execute_script(script)
115122

116-
self.create_tour(name=None, theme=None)
123+
self.set_window_size(width, height)
117124

118-
self.create_shepherd_tour(name=None, theme=None)
125+
self.maximize_window()
119126

120-
self.create_bootstrap_tour(name=None)
127+
self.switch_to_frame(frame, timeout=settings.SMALL_TIMEOUT)
121128

122-
self.create_hopscotch_tour(name=None)
129+
self.switch_to_default_content()
123130

124-
self.create_introjs_tour(name=None)
131+
self.open_new_window(switch_to=True)
125132

126-
self.add_tour_step(message, selector=None, name=None, title=None, theme=None, alignment=None)
133+
self.switch_to_window(window, timeout=settings.SMALL_TIMEOUT)
127134

128-
self.play_tour(name=None)
135+
self.switch_to_default_window()
129136

130-
self.export_tour(name=None, filename="my_tour.js", url=None)
137+
self.get_new_driver(browser=None, headless=None, servername=None, port=None,
138+
proxy=None, switch_to=True, cap_file=None)
131139

132-
self.activate_jquery_confirm()
140+
self.switch_to_driver(driver)
133141

134-
self.activate_messenger()
142+
self.switch_to_default_driver()
135143

136-
self.post_message(message, duration=None, pause=True, style="info")
144+
self.save_screenshot(name, folder=None)
137145

138-
self.post_success_message(message, duration=None, pause=True)
146+
self.wait_for_ready_state_complete(timeout=settings.EXTREME_TIMEOUT)
139147

140-
self.post_error_message(message, duration=None, pause=True)
148+
self.wait_for_angularjs(timeout=settings.LARGE_TIMEOUT)
141149

142-
self.set_messenger_theme(theme="default", location="default", max_messages="default")
150+
self.activate_jquery()
143151

144152
self.bring_to_front(selector, by=By.CSS_SELECTOR)
145153

@@ -155,8 +163,6 @@ self.js_click(selector, by=By.CSS_SELECTOR)
155163

156164
self.jquery_click(selector, by=By.CSS_SELECTOR)
157165

158-
self.submit(selector, by=By.CSS_SELECTOR)
159-
160166
self.hide_element(selector, by=By.CSS_SELECTOR)
161167

162168
self.hide_elements(selector, by=By.CSS_SELECTOR)
@@ -185,8 +191,6 @@ self.assert_no_404_errors(multithreaded=True)
185191

186192
self.print_unique_links_with_status_codes()
187193

188-
self.safe_execute_script(script)
189-
190194
self.create_folder(folder)
191195

192196
self.choose_file(selector, file_path, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
@@ -231,22 +235,47 @@ self.js_update_text(selector, new_value, by=By.CSS_SELECTOR, timeout=settings.LA
231235

232236
self.jquery_update_text(selector, new_value, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
233237

234-
self.hover_on_element(selector, by=By.CSS_SELECTOR)
238+
########
235239

236-
self.hover_and_click(hover_selector, click_selector,
237-
hover_by=By.CSS_SELECTOR, click_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
240+
self.add_css_link(css_link)
238241

239-
self.hover_and_double_click(hover_selector, click_selector,
240-
hover_by=By.CSS_SELECTOR, click_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
242+
self.add_js_link(js_link)
241243

242-
self.select_option_by_text(dropdown_selector, option,
243-
dropdown_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
244+
self.add_css_style(css_style)
244245

245-
self.select_option_by_index(dropdown_selector, option,
246-
dropdown_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
246+
self.add_js_code_from_link(js_link)
247247

248-
self.select_option_by_value(dropdown_selector, option,
249-
dropdown_by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
248+
self.add_meta_tag(http_equiv=None, content=None)
249+
250+
########
251+
252+
self.create_tour(name=None, theme=None)
253+
254+
self.create_shepherd_tour(name=None, theme=None)
255+
256+
self.create_bootstrap_tour(name=None)
257+
258+
self.create_hopscotch_tour(name=None)
259+
260+
self.create_introjs_tour(name=None)
261+
262+
self.add_tour_step(message, selector=None, name=None, title=None, theme=None, alignment=None)
263+
264+
self.play_tour(name=None)
265+
266+
self.export_tour(name=None, filename="my_tour.js", url=None)
267+
268+
self.activate_jquery_confirm()
269+
270+
self.activate_messenger()
271+
272+
self.post_message(message, duration=None, pause=True, style="info")
273+
274+
self.post_success_message(message, duration=None, pause=True)
275+
276+
self.post_error_message(message, duration=None, pause=True)
277+
278+
self.set_messenger_theme(theme="default", location="default", max_messages="default")
250279

251280
########
252281

@@ -262,16 +291,14 @@ self.generate_traffic_chain(pages, loops=1)
262291

263292
self.wait_for_element_present(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
264293

265-
self.get_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
266-
267-
self.assert_element_present(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
268-
269-
########
270-
271294
self.wait_for_element_visible(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
272295

273296
self.wait_for_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
274297

298+
self.get_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
299+
300+
self.assert_element_present(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
301+
275302
self.find_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
276303

277304
self.assert_element(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
@@ -296,6 +323,10 @@ self.assert_exact_text(text, selector="html", by=By.CSS_SELECTOR, timeout=settin
296323

297324
########
298325

326+
self.wait_for_link_text_present(link_text, timeout=settings.SMALL_TIMEOUT)
327+
328+
self.wait_for_partial_link_text_present(link_text, timeout=settings.SMALL_TIMEOUT)
329+
299330
self.wait_for_link_text_visible(link_text, timeout=settings.LARGE_TIMEOUT)
300331

301332
self.wait_for_link_text(link_text, timeout=settings.LARGE_TIMEOUT)
@@ -326,35 +357,16 @@ self.assert_element_not_visible(selector, by=By.CSS_SELECTOR, timeout=settings.S
326357

327358
########
328359

329-
self.wait_for_ready_state_complete(timeout=settings.EXTREME_TIMEOUT)
330-
331360
self.wait_for_and_accept_alert(timeout=settings.LARGE_TIMEOUT)
332361

333362
self.wait_for_and_dismiss_alert(timeout=settings.LARGE_TIMEOUT)
334363

335364
self.wait_for_and_switch_to_alert(timeout=settings.LARGE_TIMEOUT)
336365

337-
self.switch_to_frame(frame, timeout=settings.SMALL_TIMEOUT)
338-
339-
self.switch_to_default_content()
340-
341-
self.open_new_window(switch_to=True)
342-
343-
self.switch_to_window(window, timeout=settings.SMALL_TIMEOUT)
344-
345-
self.switch_to_default_window()
366+
########
346367

347368
self.check_window(name="default", level=0, baseline=False)
348369

349-
self.save_screenshot(name, folder=None)
350-
351-
self.get_new_driver(browser=None, headless=None, servername=None, port=None,
352-
proxy=None, switch_to=True, cap_file=None)
353-
354-
self.switch_to_driver(driver)
355-
356-
self.switch_to_default_driver()
357-
358370
########
359371

360372
self.delayed_assert_element(selector, by=By.CSS_SELECTOR, timeout=settings.MINI_TIMEOUT)

integrations/node_js/my_first_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ class MyTestClass(BaseCase):
55

66
def test_basic(self):
77
self.open("https://xkcd.com/353/")
8-
self.assert_element('img[alt="Python"]')
98
self.assert_title("xkcd: Python")
9+
self.assert_element('img[alt="Python"]')
1010
self.click('a[rel="license"]')
1111
self.assert_text("free to copy and reuse")
1212
self.go_back()

0 commit comments

Comments
 (0)