Skip to content

Commit 251c931

Browse files
authored
Merge pull request #1030 from seleniumbase/refresh-python-dependencies
Refresh Python dependencies
2 parents 848fc23 + cae205a commit 251c931

14 files changed

+87
-151
lines changed

README.md

Lines changed: 29 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,17 @@
55
<meta property="og:image" content="https://seleniumbase.io/cdn/img/mac_sb_logo_5.png" />
66
<link rel="icon" href="https://seleniumbase.io/img/logo6.png" />
77

8-
<h2 align="center"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.io/cdn/img/sb_banner_d.png" alt="SeleniumBase" title="SeleniumBase" width="530" /></a></h2>
9-
<h4 align="center">Everything you need for web testing.</h4>
10-
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/releases">
11-
<img src="https://img.shields.io/github/v/release/seleniumbase/SeleniumBase.svg?color=2277EE" alt="Latest Release on GitHub" /></a> <a href="https://pypi.org/project/seleniumbase/">
12-
<img src="https://img.shields.io/pypi/v/seleniumbase.svg?color=00a0e0" alt="Latest Release on PyPI" /></a> <a href="https://pepy.tech/project/seleniumbase">
13-
<img src="https://pepy.tech/badge/seleniumbase/month" alt="SeleniumBase downloads per month" /></a></p>
14-
8+
<h3 align="center"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.io/cdn/img/sb_logo_d.png" alt="SeleniumBase" title="SeleniumBase" width="220" /></a></h3>
159
<!-- View on GitHub -->
16-
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/actions">
17-
<img src="https://github.com/seleniumbase/SeleniumBase/workflows/CI%20build/badge.svg" alt="SeleniumBase GitHub Actions" /></a> <a href="https://dev.azure.com/seleniumbase/seleniumbase/_build/latest?definitionId=1&branchName=master"> <img src="https://dev.azure.com/seleniumbase/seleniumbase/_apis/build/status/seleniumbase.SeleniumBase?branchName=master" alt="SeleniumBase Azure Pipelines" /></a> <a href="https://gitter.im/seleniumbase/SeleniumBase">
18-
<img src="https://badges.gitter.im/seleniumbase/SeleniumBase.svg" alt="SeleniumBase" /></a> <a href="https://seleniumbase.io">
19-
<img src="https://img.shields.io/badge/docs-%20📓%20📖%20📚-11BBCC.svg" alt="SeleniumBase.io Docs" title="SeleniumBase.io Docs" /></a></p>
20-
21-
<p align="center">SeleniumBase is a complete framework for browser automation and testing with <a href="https://docs.pytest.org/en/latest/index.html">pytest</a>.<br />The API simplifies <a href="https://www.selenium.dev/documentation/">Selenium</a>'s out-of-the-box API, leading to cleaner, maintainable code. <br />Includes advanced features such as a <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">Dashboard</a>, a <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">Recorder</a>, and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">JS code generators</a>.</p>
10+
<h4 align="center">Better web testing with <a href="https://www.selenium.dev/documentation/">Selenium</a> and <a href="https://docs.pytest.org/en/latest/index.html">pytest</a>.</h4>
11+
<p align="center">
12+
<a href="https://github.com/seleniumbase/SeleniumBase/releases">
13+
<img src="https://img.shields.io/github/v/release/seleniumbase/SeleniumBase.svg?color=2277EE" alt="Latest Release on GitHub" /></a> <a href="https://pypi.python.org/pypi/seleniumbase">
14+
<img src="https://img.shields.io/pypi/v/seleniumbase.svg?color=22AAEE" alt="Latest Release on PyPI" /></a> <a href="https://seleniumbase.io">
15+
<img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBDD.svg" alt="SeleniumBase.io Docs" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/actions">
16+
<img src="https://github.com/seleniumbase/SeleniumBase/workflows/CI%20build/badge.svg" alt="SeleniumBase GitHub Actions" /></a> <a href="https://gitter.im/seleniumbase/SeleniumBase">
17+
<img src="https://badges.gitter.im/seleniumbase/SeleniumBase.svg" alt="SeleniumBase" /></a>
18+
</p>
2219

2320
<p align="center">
2421
<a href="#python_installation">🚀 Start</a> |
@@ -46,48 +43,19 @@
4643
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/dialog_boxes/ReadMe.md">🛂 Dialog</a>
4744
</p>
4845

49-
<p align="left">
50-
✅ Get set up in minutes. Deploy anywhere.<br />
51-
✅ Build reliable tests with a <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">complete API</a>.<br />
52-
✅ Learn from 100s of real-world <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">examples</a>.<br />
53-
✅ Includes <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">dashboards and reporting tools</a>.<br />
54-
✅ Supports Chromium, Firefox, IE, & Safari.<br />
55-
✅ Can run on <a href="https://seleniumbase.io/integrations/github/workflows/ReadMe/">GHA</a>, <a href="https://seleniumbase.io/integrations/google_cloud/ReadMe/">GCP</a>, <a href="https://seleniumbase.io/integrations/azure/jenkins/ReadMe/">Azure</a>, & <a href="https://seleniumbase.io/integrations/docker/ReadMe/">Docker</a>.<br />
56-
</p>
57-
5846
--------
5947

6048
<a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.io/cdn/img/super_logo_sb.png" alt="SeleniumBase" title="SeleniumBase" width="202" /></a>
6149

62-
<p align="left"><b>Example:</b> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py">my_first_test.py</a> (<code>--demo</code> mode)</p>
50+
<p align="left"><b>Example test:</b> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py">test_demo_site.py</a></p>
6351

6452
```bash
65-
pytest my_first_test.py --demo
53+
cd examples/
54+
pytest test_demo_site.py
6655
```
6756

68-
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py"><img src="https://seleniumbase.io/cdn/gif/my_first_test_2.gif" width="480" alt="SeleniumBase Demo Mode" title="SeleniumBase Demo Mode" /></a></p>
57+
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py"><img src="https://seleniumbase.io/cdn/gif/demo_page_4.gif" width="400" alt="SeleniumBase Demo Mode" title="SeleniumBase Test" /></a></p>
6958

70-
```python
71-
from seleniumbase import BaseCase
72-
73-
class MyTestClass(BaseCase):
74-
def test_basics(self):
75-
url = "https://store.xkcd.com/collections/posters"
76-
self.open(url)
77-
self.type('input[name="q"]', "xkcd book")
78-
self.click('input[value="Search"]')
79-
self.assert_text("xkcd: volume 0", "h3")
80-
self.open("https://xkcd.com/353/")
81-
self.assert_title("xkcd: Python")
82-
self.assert_element('img[alt="Python"]')
83-
self.click('a[rel="license"]')
84-
self.assert_text("free to copy and reuse")
85-
self.go_back()
86-
self.click_link("About")
87-
self.assert_exact_text("xkcd.com", "h2")
88-
```
89-
90-
--------
9159

9260
<a id="python_installation"></a>
9361
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Python Setup:</h2>
@@ -161,53 +129,26 @@ COMMANDS:
161129
Use "pytest" for running tests.
162130
```
163131
164-
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Download a webdriver:</h3>
165-
166-
✅ SeleniumBase can download webdrivers to the [seleniumbase/drivers](https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/drivers) folder with the ``install`` command:
167-
168-
```bash
169-
sbase install chromedriver
170-
```
171-
172-
* You need a different webdriver for each browser to automate: ``chromedriver`` for Chrome, ``edgedriver`` for Edge, ``geckodriver`` for Firefox, and ``operadriver`` for Opera.
173-
* If you have the latest version of Chrome installed, get the latest chromedriver (<i>otherwise it defaults to chromedriver 2.44 for compatibility reasons</i>):
174-
175-
```bash
176-
sbase install chromedriver latest
177-
```
132+
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Downloading web drivers:</h3>
178133
179-
* If you run a test without the correct webdriver installed, the driver will be downloaded automatically.
134+
✅ SeleniumBase automatically downloads web drivers as needed, such as ``chromedriver`` and ``geckodriver`` (Firefox).
180135
181-
(See [seleniumbase.io/seleniumbase/console_scripts/ReadMe/](https://seleniumbase.io/seleniumbase/console_scripts/ReadMe/) for more information on SeleniumBase console scripts.)
136+
✅ To manually download a webdriver, see [Console Scripts](https://seleniumbase.io/seleniumbase/console_scripts/ReadMe/) OR [Webdriver Installation](https://seleniumbase.io/help_docs/webdriver_installation/).
182137
183138
<h3><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Running tests:</h3>
184139
185-
🔵 <b>If you've cloned SeleniumBase from GitHub, you can run sample tests from the [examples/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples) folder:</b>
186-
187-
```bash
188-
cd examples/
189-
pytest test_demo_site.py
190-
```
140+
🔵 If you've cloned SeleniumBase, you can run tests from the [examples/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples) folder.
191141
192-
> (Chrome is the default browser if not specified with ``--browser=BROWSER``. On Linux, ``--headless`` is the default behavior. You can also run in headless mode on any OS. If your Linux machine has a GUI and you want to see the web browser as tests run, add ``--headed`` or ``--gui``.)
193-
194-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py"><img src="https://seleniumbase.io/cdn/gif/demo_page_2.gif" title="SeleniumBase Demo Page" width="450" /></a><br />
195-
196-
🔵 <b>Here are more examples that you can run:</b>
197-
198-
```bash
199-
pytest my_first_test.py
200-
201-
pytest test_swag_labs.py
202-
```
203-
204-
🔵 <b>Run [my_first_test.py](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py) in Demo Mode:</b>
142+
<p align="left">Here's <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py">my_first_test.py</a> in <code>--demo</code> mode:</p>
205143
206144
```bash
145+
cd examples/
207146
pytest my_first_test.py --demo
208147
```
209148
210-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py"><img src="https://seleniumbase.io/cdn/gif/my_first_test_2.gif" alt="SeleniumBase Demo Mode" title="SeleniumBase Demo Mode" /></a>
149+
> (Chrome is the default browser if not specified with ``--browser``. On Linux, ``--headless`` is the default behavior.)
150+
151+
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/my_first_test.py"><img src="https://seleniumbase.io/cdn/gif/my_first_test_2.gif" alt="SeleniumBase Test" title="SeleniumBase Demo Mode" width="400" /></a>
211152
212153
* By default, **[CSS Selectors](https://www.w3schools.com/cssref/css_selectors.asp)** are used for finding page elements.
213154
* If you're new to CSS Selectors, games like [CSS Diner](http://flukeout.github.io/) can help you learn.
@@ -525,7 +466,7 @@ pytest test_fail.py
525466
pytest --dashboard --rs --headless
526467
```
527468
528-
<img src="https://seleniumbase.io/cdn/img/dashboard_1.png" alt="The SeleniumBase Dashboard" title="The SeleniumBase Dashboard" width="360" />
469+
<img src="https://seleniumbase.io/cdn/img/dashboard_1.png" alt="The SeleniumBase Dashboard" title="The SeleniumBase Dashboard" width="380" />
529470
530471
🔵 Additionally, you can host your own SeleniumBase Dashboard Server on a port of your choice. Here's an example of that using Python 3's ``http.server``:
531472
@@ -986,8 +927,8 @@ pytest --reruns=1 --reruns-delay=1
986927
<div><a href="https://pepy.tech/project/seleniumbase"> <img src="https://pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" /></a> <a href="https://twitter.com/SeleniumBase">
987928
<img src="https://img.shields.io/twitter/follow/seleniumbase.svg?style=flat-rounded&logo=twitter&label=followers" alt="SeleniumBase Twitter followers" /></a></div>
988929
989-
<p><div><span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="56" /></a></span>
990-
<span><a href="https://gitter.im/seleniumbase/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="44" /></a></span>
991-
<span><a href="https://twitter.com/seleniumbase"><img src="https://seleniumbase.io/img/social/share_twitter.svg" title="SeleniumBase on Twitter" alt="SeleniumBase on Twitter" width="60" /></a></span>
992-
<span><a href="https://instagram.com/seleniumbase"><img src="https://seleniumbase.io/img/social/share_instagram.svg" title="SeleniumBase on Instagram" alt="SeleniumBase on Instagram" width="52" /></a></span>
993-
<span><a href="https://www.facebook.com/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_facebook.svg" title="SeleniumBase on Facebook" alt="SeleniumBase on Facebook" width="56" /></a></span></div></p>
930+
<p><div><span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="46" /></a></span>
931+
<span><a href="https://gitter.im/seleniumbase/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="36" /></a></span>
932+
<span><a href="https://twitter.com/seleniumbase"><img src="https://seleniumbase.io/img/social/share_twitter.svg" title="SeleniumBase on Twitter" alt="SeleniumBase on Twitter" width="48" /></a></span>
933+
<span><a href="https://instagram.com/seleniumbase"><img src="https://seleniumbase.io/img/social/share_instagram.svg" title="SeleniumBase on Instagram" alt="SeleniumBase on Instagram" width="42" /></a></span>
934+
<span><a href="https://www.facebook.com/SeleniumBase"><img src="https://seleniumbase.io/img/social/share_facebook.svg" title="SeleniumBase on Facebook" alt="SeleniumBase on Facebook" width="46" /></a></span></div></p>

examples/ReadMe.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Run a test on the Demo Site to try many SeleniumBase methods:
6969
pytest test_demo_site.py
7070
```
7171

72-
<img src="https://seleniumbase.io/cdn/gif/demo_page_2.gif" title="SeleniumBase Demo Page" /><br />
72+
<img src="https://seleniumbase.io/cdn/gif/demo_page_4.gif" title="SeleniumBase Demo Page" /><br />
7373

7474
Run tests multi-threaded using [n] threads:
7575

examples/tour_examples/ReadMe.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<h3 align="left"><img src="https://seleniumbase.io/cdn/img/sb_logo_b.png" alt="SeleniumBase" width="320" /></h3>
1+
<h3 align="left"><img src="https://seleniumbase.io/cdn/img/g_maps_tour.png" alt="SeleniumBase Tour" width="340" /></h3>
22

33
<h2><img src="https://seleniumbase.io/img/logo6.png" title="SeleniumBase" width="32" /> Interactive Product Tours</h2>
44

@@ -135,3 +135,5 @@ OR
135135
``self.export_tour(name=None, filename="my_tour.js")``
136136

137137
(``name`` is optional unless you gave custom names to your tours when you created them. ``filename`` is the name of the file to save the JavaScript to.) Once you've exported your tour, you can use it outside of SeleniumBase. You can even copy the tour's JavaScript code to the Console of your web browser to play the tour from there (you need to be on the correct web page for it to work).
138+
139+
<h3 align="left"><img src="https://seleniumbase.io/cdn/img/sb_logo_b.png" alt="SeleniumBase" width="320" /></h3>

examples/tour_examples/bootstrap_google_tour.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ def test_google_tour(self):
3434
self.wait_for_element("#zoom", timeout=20)
3535

3636
self.create_bootstrap_tour()
37-
self.add_tour_step("Welcome to Google Maps!")
37+
self.add_tour_step("Welcome to Google Maps", title="SeleniumBase Tour")
3838
self.add_tour_step(
39-
"Type in a location here.", "#searchboxinput", title="Search Box"
39+
"The location goes here.", "#searchboxinput", title="Search Box"
4040
)
4141
self.add_tour_step(
4242
"Then click here to show it on the map.",
@@ -45,12 +45,12 @@ def test_google_tour(self):
4545
)
4646
self.add_tour_step(
4747
"Or click here to get driving directions.",
48-
"#searchbox-directions",
48+
'button[aria-label="Directions"]',
4949
alignment="bottom",
5050
)
5151
self.add_tour_step(
5252
"Use this button to switch to Satellite view.",
53-
"div.widget-minimap-shim",
53+
'button[jsaction*="minimap.main;"]',
5454
alignment="right",
5555
)
5656
self.add_tour_step(
@@ -61,7 +61,7 @@ def test_google_tour(self):
6161
)
6262
self.add_tour_step(
6363
"Use the Menu button to see more options.",
64-
".searchbox-hamburger-container",
64+
'button[jsaction*="settings.open;"]',
6565
alignment="right",
6666
)
6767
self.add_tour_step(
@@ -70,7 +70,7 @@ def test_google_tour(self):
7070
alignment="left",
7171
)
7272
self.add_tour_step(
73-
"Thanks for using SeleniumBase Tours!", title="End of Guided Tour"
73+
"Thanks for using SeleniumBase Tours!", title="End of Guided Tour",
7474
)
7575
self.export_tour(filename="bootstrap_google_maps_tour.js")
7676
self.play_tour()

examples/tour_examples/driverjs_maps_tour.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,23 @@ def test_create_tour(self):
1111
# Create a website tour using the DriverJS library
1212
# Same as: self.create_driverjs_tour()
1313
self.create_tour(theme="driverjs")
14+
self.add_tour_step("Welcome to Google Maps", title="SeleniumBase Tour")
1415
self.add_tour_step(
15-
"🗺️ Welcome to Google Maps 🗺️",
16-
"html",
17-
title="✅ SeleniumBase Tours 🌎",
16+
"The location goes here.", "#searchboxinput", title="Search Box"
1817
)
1918
self.add_tour_step(
20-
"You can type a location into this Search box.", "#searchboxinput"
21-
)
22-
self.add_tour_step(
23-
"Then click here to view it on the map.",
19+
"Then click here to show it on the map.",
2420
"#searchbox-searchbutton",
2521
alignment="bottom",
2622
)
2723
self.add_tour_step(
2824
"Or click here to get driving directions.",
29-
"#searchbox-directions",
25+
'button[aria-label="Directions"]',
3026
alignment="bottom",
3127
)
3228
self.add_tour_step(
33-
"Use this button to get a Satellite view.",
34-
"div.widget-minimap-shim",
29+
"Use this button to switch to Satellite view.",
30+
'button[jsaction*="minimap.main;"]',
3531
alignment="right",
3632
)
3733
self.add_tour_step(
@@ -41,8 +37,8 @@ def test_create_tour(self):
4137
"Or click here to zoom out.", "#widget-zoom-out", alignment="left"
4238
)
4339
self.add_tour_step(
44-
"Use the Menu button for more options.",
45-
".searchbox-hamburger-container",
40+
"Use the Menu button to see more options.",
41+
'button[jsaction*="settings.open;"]',
4642
alignment="right",
4743
)
4844
self.add_tour_step(
@@ -51,9 +47,7 @@ def test_create_tour(self):
5147
alignment="left",
5248
)
5349
self.add_tour_step(
54-
"Thanks for using SeleniumBase Tours",
55-
"html",
56-
title="🚃 End of Guided Tour 🚃",
50+
"Thanks for using SeleniumBase Tours!", title="End of Guided Tour",
5751
)
5852
self.export_tour() # The default name for exports is "my_tour.js"
5953
self.play_tour(interval=0) # If interval > 0, autoplay after N seconds

0 commit comments

Comments
 (0)