seleniumbase 4.15.10__py3-none-any.whl → 4.15.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- seleniumbase/__version__.py +1 -1
- seleniumbase/core/mysql.py +3 -2
- {seleniumbase-4.15.10.dist-info → seleniumbase-4.15.12.dist-info}/METADATA +62 -60
- {seleniumbase-4.15.10.dist-info → seleniumbase-4.15.12.dist-info}/RECORD +8 -8
- {seleniumbase-4.15.10.dist-info → seleniumbase-4.15.12.dist-info}/LICENSE +0 -0
- {seleniumbase-4.15.10.dist-info → seleniumbase-4.15.12.dist-info}/WHEEL +0 -0
- {seleniumbase-4.15.10.dist-info → seleniumbase-4.15.12.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.15.10.dist-info → seleniumbase-4.15.12.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.15.
|
2
|
+
__version__ = "4.15.12"
|
seleniumbase/core/mysql.py
CHANGED
@@ -62,8 +62,9 @@ class DatabaseManager:
|
|
62
62
|
except Exception:
|
63
63
|
time.sleep(backoff)
|
64
64
|
count = count + 1
|
65
|
-
|
66
|
-
|
65
|
+
if retry_count == 3:
|
66
|
+
print("Unable to connect to Database after 3 retries.")
|
67
|
+
raise
|
67
68
|
|
68
69
|
def query_fetch_all(self, query, values):
|
69
70
|
"""Execute db query, get all the values, and close the connection."""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.15.
|
3
|
+
Version: 4.15.12
|
4
4
|
Summary: A complete web automation framework for end-to-end testing.
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
6
6
|
Author: Michael Mintz
|
@@ -56,13 +56,11 @@ Classifier: Topic :: Utilities
|
|
56
56
|
Requires-Python: >=3.6
|
57
57
|
Description-Content-Type: text/markdown
|
58
58
|
License-File: LICENSE
|
59
|
-
Requires-Dist: PyYAML (>=6.0)
|
60
59
|
Requires-Dist: certifi (>=2023.5.7)
|
61
60
|
Requires-Dist: parse (>=1.19.1)
|
62
61
|
Requires-Dist: parse-type (>=0.6.2)
|
63
62
|
Requires-Dist: six (==1.16.0)
|
64
63
|
Requires-Dist: idna (==3.4)
|
65
|
-
Requires-Dist: requests-toolbelt (==1.0.0)
|
66
64
|
Requires-Dist: pynose (==1.4.6)
|
67
65
|
Requires-Dist: sortedcontainers (==2.4.0)
|
68
66
|
Requires-Dist: py (==1.11.0)
|
@@ -73,21 +71,14 @@ Requires-Dist: behave (==1.2.6)
|
|
73
71
|
Requires-Dist: beautifulsoup4 (==4.12.2)
|
74
72
|
Requires-Dist: tabcompleter (==1.2.1)
|
75
73
|
Requires-Dist: pdbp (==1.4.2)
|
76
|
-
Requires-Dist: pycparser (==2.21)
|
77
|
-
Requires-Dist: cffi (==1.15.1)
|
78
74
|
Requires-Dist: pyreadline3 (==3.4.1) ; platform_system == "Windows"
|
79
75
|
Requires-Dist: pip (>=21.3.1) ; python_version < "3.7"
|
80
76
|
Requires-Dist: packaging (>=21.3) ; python_version < "3.7"
|
81
77
|
Requires-Dist: setuptools (>=59.6.0) ; python_version < "3.7"
|
82
|
-
Requires-Dist: tomli (>=1.2.3) ; python_version < "3.7"
|
83
|
-
Requires-Dist: tqdm (>=4.64.1) ; python_version < "3.7"
|
84
78
|
Requires-Dist: wheel (>=0.37.1) ; python_version < "3.7"
|
85
79
|
Requires-Dist: attrs (==22.1.0) ; python_version < "3.7"
|
86
80
|
Requires-Dist: filelock (>=3.4.1) ; python_version < "3.7"
|
87
81
|
Requires-Dist: platformdirs (>=2.4.0) ; python_version < "3.7"
|
88
|
-
Requires-Dist: pyparsing (>=3.0.7) ; python_version < "3.7"
|
89
|
-
Requires-Dist: zipp (==3.6.0) ; python_version < "3.7"
|
90
|
-
Requires-Dist: more-itertools (==8.14.0) ; python_version < "3.7"
|
91
82
|
Requires-Dist: chardet (==4.0.0) ; python_version < "3.7"
|
92
83
|
Requires-Dist: charset-normalizer (==2.0.12) ; python_version < "3.7"
|
93
84
|
Requires-Dist: urllib3 (==1.26.12) ; python_version < "3.7"
|
@@ -106,7 +97,6 @@ Requires-Dist: pytest-rerunfailures (==10.3) ; python_version < "3.7"
|
|
106
97
|
Requires-Dist: pytest-xdist (==2.5.0) ; python_version < "3.7"
|
107
98
|
Requires-Dist: parameterized (==0.8.1) ; python_version < "3.7"
|
108
99
|
Requires-Dist: soupsieve (==2.3.2.post1) ; python_version < "3.7"
|
109
|
-
Requires-Dist: cryptography (==36.0.2) ; python_version < "3.7"
|
110
100
|
Requires-Dist: pygments (==2.14.0) ; python_version < "3.7"
|
111
101
|
Requires-Dist: colorama (==0.4.5) ; python_version < "3.7"
|
112
102
|
Requires-Dist: future-breakpoint (==2.0.0) ; python_version < "3.7"
|
@@ -114,21 +104,15 @@ Requires-Dist: pyotp (==2.7.0) ; python_version < "3.7"
|
|
114
104
|
Requires-Dist: typing-extensions (==4.1.1) ; python_version < "3.7"
|
115
105
|
Requires-Dist: commonmark (==0.9.1) ; python_version < "3.7"
|
116
106
|
Requires-Dist: rich (==12.6.0) ; python_version < "3.7"
|
117
|
-
Requires-Dist: keyring (>=23.4.1) ; python_version < "3.8"
|
118
107
|
Requires-Dist: importlib-metadata (==4.2.0) ; python_version < "3.8"
|
119
108
|
Requires-Dist: urllib3 (<2.1.0,>=1.26.16) ; python_version >= "3.10"
|
120
109
|
Requires-Dist: pip (>=23.1.2) ; python_version >= "3.7"
|
121
110
|
Requires-Dist: packaging (>=23.1) ; python_version >= "3.7"
|
122
111
|
Requires-Dist: setuptools (>=68.0.0) ; python_version >= "3.7"
|
123
|
-
Requires-Dist: tomli (>=2.0.1) ; python_version >= "3.7"
|
124
|
-
Requires-Dist: tqdm (>=4.65.0) ; python_version >= "3.7"
|
125
112
|
Requires-Dist: wheel (>=0.40.0) ; python_version >= "3.7"
|
126
113
|
Requires-Dist: attrs (>=23.1.0) ; python_version >= "3.7"
|
127
114
|
Requires-Dist: filelock (>=3.12.2) ; python_version >= "3.7"
|
128
115
|
Requires-Dist: platformdirs (>=3.8.1) ; python_version >= "3.7"
|
129
|
-
Requires-Dist: pyparsing (>=3.1.0) ; python_version >= "3.7"
|
130
|
-
Requires-Dist: zipp (>=3.15.0) ; python_version >= "3.7"
|
131
|
-
Requires-Dist: more-itertools (>=9.1.0) ; python_version >= "3.7"
|
132
116
|
Requires-Dist: chardet (==5.1.0) ; python_version >= "3.7"
|
133
117
|
Requires-Dist: charset-normalizer (==3.2.0) ; python_version >= "3.7"
|
134
118
|
Requires-Dist: requests (==2.31.0) ; python_version >= "3.7"
|
@@ -137,12 +121,11 @@ Requires-Dist: h11 (==0.14.0) ; python_version >= "3.7"
|
|
137
121
|
Requires-Dist: outcome (==1.2.0) ; python_version >= "3.7"
|
138
122
|
Requires-Dist: trio (==0.22.1) ; python_version >= "3.7"
|
139
123
|
Requires-Dist: trio-websocket (==0.10.3) ; python_version >= "3.7"
|
140
|
-
Requires-Dist: pyopenssl (==23.2.0) ; python_version >= "3.7"
|
141
124
|
Requires-Dist: wsproto (==1.2.0) ; python_version >= "3.7"
|
142
125
|
Requires-Dist: selenium (==4.10.0) ; python_version >= "3.7"
|
143
126
|
Requires-Dist: cssselect (==1.2.0) ; python_version >= "3.7"
|
144
127
|
Requires-Dist: fasteners (==0.18) ; python_version >= "3.7"
|
145
|
-
Requires-Dist: execnet (==2.0.
|
128
|
+
Requires-Dist: execnet (==2.0.2) ; python_version >= "3.7"
|
146
129
|
Requires-Dist: iniconfig (==2.0.0) ; python_version >= "3.7"
|
147
130
|
Requires-Dist: pluggy (==1.2.0) ; python_version >= "3.7"
|
148
131
|
Requires-Dist: pytest (==7.4.0) ; python_version >= "3.7"
|
@@ -151,7 +134,6 @@ Requires-Dist: pytest-rerunfailures (==12.0) ; python_version >= "3.7"
|
|
151
134
|
Requires-Dist: pytest-xdist (==3.3.1) ; python_version >= "3.7"
|
152
135
|
Requires-Dist: parameterized (==0.9.0) ; python_version >= "3.7"
|
153
136
|
Requires-Dist: soupsieve (==2.4.1) ; python_version >= "3.7"
|
154
|
-
Requires-Dist: cryptography (==41.0.1) ; python_version >= "3.7"
|
155
137
|
Requires-Dist: pygments (==2.15.1) ; python_version >= "3.7"
|
156
138
|
Requires-Dist: colorama (==0.4.6) ; python_version >= "3.7"
|
157
139
|
Requires-Dist: exceptiongroup (==1.1.2) ; python_version >= "3.7"
|
@@ -159,7 +141,6 @@ Requires-Dist: pyotp (==2.8.0) ; python_version >= "3.7"
|
|
159
141
|
Requires-Dist: mdurl (==0.1.2) ; python_version >= "3.7"
|
160
142
|
Requires-Dist: rich (==13.4.2) ; python_version >= "3.7"
|
161
143
|
Requires-Dist: urllib3 (<2,>=1.26.16) ; python_version >= "3.7" and python_version < "3.10"
|
162
|
-
Requires-Dist: keyring (>=24.1.1) ; python_version >= "3.8"
|
163
144
|
Requires-Dist: markdown-it-py (==3.0.0) ; python_version >= "3.8"
|
164
145
|
Provides-Extra: allure
|
165
146
|
Requires-Dist: allure-pytest (==2.9.45) ; (python_version < "3.7") and extra == 'allure'
|
@@ -186,8 +167,12 @@ Requires-Dist: ipdb (==0.13.11) ; extra == 'ipdb'
|
|
186
167
|
Requires-Dist: ipython (==7.16.3) ; (python_version < "3.7") and extra == 'ipdb'
|
187
168
|
Requires-Dist: ipython (==7.34.0) ; (python_version >= "3.7") and extra == 'ipdb'
|
188
169
|
Provides-Extra: pdfminer
|
170
|
+
Requires-Dist: cffi (==1.15.1) ; extra == 'pdfminer'
|
171
|
+
Requires-Dist: pycparser (==2.21) ; extra == 'pdfminer'
|
189
172
|
Requires-Dist: pdfminer.six (==20211012) ; (python_version < "3.7") and extra == 'pdfminer'
|
173
|
+
Requires-Dist: cryptography (==36.0.2) ; (python_version < "3.7") and extra == 'pdfminer'
|
190
174
|
Requires-Dist: pdfminer.six (==20221105) ; (python_version >= "3.7") and extra == 'pdfminer'
|
175
|
+
Requires-Dist: cryptography (==41.0.1) ; (python_version >= "3.7") and extra == 'pdfminer'
|
191
176
|
Provides-Extra: pillow
|
192
177
|
Requires-Dist: Pillow (==8.4.0) ; (python_version < "3.7") and extra == 'pillow'
|
193
178
|
Requires-Dist: Pillow (==9.5.0) ; (python_version >= "3.7" and python_version < "3.8") and extra == 'pillow'
|
@@ -210,13 +195,13 @@ Requires-Dist: zstandard (==0.21.0) ; (python_version >= "3.7") and extra == 'se
|
|
210
195
|
|
211
196
|
<h1>SeleniumBase</h1>
|
212
197
|
|
213
|
-
<
|
198
|
+
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/sb_logo_10t.png" alt="SeleniumBase" title="SeleniumBase" width="266" /></a></p>
|
214
199
|
|
215
|
-
<
|
200
|
+
<h2 align="center" class="hero__title">All-in-one Test Automation Framework</h2>
|
216
201
|
|
217
|
-
<
|
202
|
+
<h3 align="center"><img src="https://seleniumbase.github.io/cdn/img/python_logo.png" title="SeleniumBase" width="29" /> For Python enthusiasts and enterprise developers <img src="https://seleniumbase.github.io/cdn/img/python_logo.png" title="SeleniumBase" width="29" /></h3>
|
218
203
|
|
219
|
-
<
|
204
|
+
<p align="center"><a href="https://pypi.python.org/pypi/seleniumbase" target="_blank"><img src="https://img.shields.io/pypi/v/seleniumbase.svg?color=3399EE" alt="PyPI version" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/releases" target="_blank"><img src="https://img.shields.io/github/v/release/seleniumbase/SeleniumBase.svg?color=22AAEE" alt="GitHub version" /></a> <a href="https://seleniumbase.io"><img src="https://img.shields.io/badge/docs-seleniumbase.io-11BBAA.svg" alt="SeleniumBase Docs" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/actions" target="_blank"><img src="https://github.com/seleniumbase/SeleniumBase/workflows/CI%20build/badge.svg" alt="SeleniumBase GitHub Actions" /></a> <a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://img.shields.io/gitter/room/seleniumbase/SeleniumBase.svg" alt="Gitter chat"/></a></p>
|
220
205
|
|
221
206
|
<p align="center">
|
222
207
|
<a href="#python_installation">🚀 Start</a> |
|
@@ -258,18 +243,17 @@ Requires-Dist: zstandard (==0.21.0) ; (python_version >= "3.7") and extra == 'se
|
|
258
243
|
|
259
244
|
--------
|
260
245
|
|
246
|
+
<p align="left"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/sb_logo_p3.png" alt="SeleniumBase" title="SeleniumBase" width="232" /></a></p>
|
247
|
+
|
261
248
|
<blockquote>
|
262
249
|
<p dir="auto"><strong>Jump to:</strong></p>
|
263
250
|
<ul dir="auto">
|
264
|
-
<li><a href="#
|
265
|
-
<li><a href="#
|
266
|
-
<li><a href="#install_seleniumbase" ><strong>Install SeleniumBase</strong></a></li>
|
267
|
-
<li><a href="#basic_example_and_usage"><strong>Basic Example & Usage</strong></a></li>
|
251
|
+
<li><a href="#install_seleniumbase" ><strong>Get Started / Installation</strong></a></li>
|
252
|
+
<li><a href="#basic_example_and_usage"><strong>Basic Example / Usage</strong></a></li>
|
268
253
|
<li><a href="#common_methods" ><strong>Common Test Methods</strong></a></li>
|
269
254
|
<li><a href="#fun_facts" ><strong>Fun Facts / Learn More</strong></a></li>
|
270
|
-
<li><a href="#demo_mode_and_debugging"><strong>Demo /
|
271
|
-
<li><a href="#
|
272
|
-
<li><a href="#new_pytest_options" ><strong>SeleniumBase Options</strong></a></li>
|
255
|
+
<li><a href="#demo_mode_and_debugging"><strong>Demo Mode / Debugging</strong></a></li>
|
256
|
+
<li><a href="#command_line_options" ><strong>Command-line Options</strong></a></li>
|
273
257
|
<li><a href="#directory_configuration"><strong>Directory Configuration</strong></a></li>
|
274
258
|
<li><a href="#seleniumbase_dashboard" ><strong>SeleniumBase Dashboard</strong></a></li>
|
275
259
|
<li><a href="#creating_visual_reports"><strong>Generating Test Reports</strong></a></li>
|
@@ -279,7 +263,8 @@ Requires-Dist: zstandard (==0.21.0) ; (python_version >= "3.7") and extra == 'se
|
|
279
263
|
--------
|
280
264
|
|
281
265
|
<a id="multiple_examples"></a>
|
282
|
-
|
266
|
+
|
267
|
+
<p align="left"><b>Example:</b> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_demo_site.py" target="_blank">test_demo_site.py</a> from <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples" target="_blank">./examples/</a> (Uses <code>--chrome</code> by default)</p>
|
283
268
|
|
284
269
|
```bash
|
285
270
|
cd examples/
|
@@ -288,12 +273,10 @@ pytest test_demo_site.py
|
|
288
273
|
|
289
274
|
<p align="left"><a href="https://seleniumbase.io/demo_page" target="_blank"><img src="https://seleniumbase.github.io/cdn/gif/demo_page_5.gif" width="480" alt="SeleniumBase Example" title="SeleniumBase Example" /></a></p>
|
290
275
|
|
291
|
-
>
|
276
|
+
> Easy to type, click, select, toggle, drag-and-drop, etc.
|
292
277
|
|
293
278
|
--------
|
294
279
|
|
295
|
-
Looking for overpriced coffee? Try running this test:
|
296
|
-
|
297
280
|
<p align="left"><b>Example:</b> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_coffee_cart.py" target="_blank">test_coffee_cart.py</a> from <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples" target="_blank">./examples/</a></p>
|
298
281
|
|
299
282
|
```bash
|
@@ -327,6 +310,8 @@ class CoffeeCartTest(BaseCase):
|
|
327
310
|
self.assert_text("Thanks for your purchase.", "#app .success")
|
328
311
|
```
|
329
312
|
|
313
|
+
(For more examples, see the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">SeleniumBase/examples/</a> folder.)
|
314
|
+
|
330
315
|
--------
|
331
316
|
|
332
317
|
<details>
|
@@ -556,7 +541,7 @@ Making [chromedriver 114.0.5735.90] executable ...
|
|
556
541
|
|
557
542
|
|
558
543
|
<a id="basic_example_and_usage"></a>
|
559
|
-
<h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Basic Example
|
544
|
+
<h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Basic Example / Usage:</h2>
|
560
545
|
|
561
546
|
🔵 If you've cloned SeleniumBase, you can run tests from the [examples/](https://github.com/seleniumbase/SeleniumBase/tree/master/examples) folder.
|
562
547
|
|
@@ -667,8 +652,8 @@ self.type("input", "dogs\n")
|
|
667
652
|
Most SeleniumBase scripts can be run with <code>pytest</code>, <code>pynose</code>, or pure <code>python</code>. Not all test runners can run all test formats. For example, tests that use the ``sb`` pytest fixture can only be run with ``pytest``. (See <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a>) There's also a <a href="https://behave.readthedocs.io/en/stable/gherkin.html#features" target="_blank">Gherkin</a> test format that runs with <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/behave_bdd/ReadMe.md">behave</a>.
|
668
653
|
|
669
654
|
```bash
|
670
|
-
pytest test_sb_fixture.py
|
671
655
|
pytest coffee_cart_tests.py --rs
|
656
|
+
pytest test_sb_fixture.py
|
672
657
|
pytest test_suite.py --rs --html=report.html --dashboard
|
673
658
|
|
674
659
|
pynose basic_test.py --mobile
|
@@ -686,7 +671,7 @@ behave calculator.feature -D rs -D dashboard
|
|
686
671
|
* Python files that start with ``test_`` or end with ``_test.py``.
|
687
672
|
* Python methods that start with ``test_``.
|
688
673
|
|
689
|
-
With a SeleniumBase [pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/pytest.ini) file present, you can modify default discovery settings. The Python class name can be anything because ``seleniumbase.BaseCase`` inherits ``unittest.TestCase
|
674
|
+
With a SeleniumBase [pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/pytest.ini) file present, you can modify default discovery settings. The Python class name can be anything because ``seleniumbase.BaseCase`` inherits ``unittest.TestCase`` to trigger autodiscovery.
|
690
675
|
|
691
676
|
<p>✅ You can do a pre-flight check to see which tests would get discovered by <code>pytest</code> before the real flight:</p>
|
692
677
|
|
@@ -712,29 +697,36 @@ pynose [FILE_NAME.py]:[CLASS_NAME].[METHOD_NAME]
|
|
712
697
|
✅ SeleniumBase works on all popular CI/CD platforms:
|
713
698
|
<p><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md"><img alt="GitHub Actions integration" src="https://img.shields.io/badge/GitHub_Actions-12B2C2.svg?logo=GitHubActions&logoColor=CFFFC2" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/jenkins/ReadMe.md"><img alt="Jenkins integration" src="https://img.shields.io/badge/Jenkins-32B242.svg?logo=jenkins&logoColor=white" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/azure_pipelines/ReadMe.md"><img alt="Azure integration" src="https://img.shields.io/badge/Azure-2288EE.svg?logo=AzurePipelines&logoColor=white" /></a> <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/google_cloud/ReadMe.md"><img alt="Google Cloud integration" src="https://img.shields.io/badge/Google_Cloud-11CAE8.svg?logo=GoogleCloud&logoColor=EE0066" /></a> <a href="#utilizing_advanced_features"><img alt="AWS integration" src="https://img.shields.io/badge/AWS-4488DD.svg?logo=AmazonAWS&logoColor=FFFF44" /></a> <a href="https://en.wikipedia.org/wiki/Personal_computer" target="_blank"><img alt="Your Computer" src="https://img.shields.io/badge/💻_Your_Computer-44E6E6.svg" /></a></p>
|
714
699
|
|
715
|
-
<p>✅ SeleniumBase includes an automated/manual hybrid solution called <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">MasterQA</a></b
|
700
|
+
<p>✅ SeleniumBase includes an automated/manual hybrid solution called <b><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">MasterQA</a></b> to speed up manual testing with automation while the manual tester handles validation.</p>
|
716
701
|
|
717
702
|
<p>✅ For a full list of SeleniumBase features, <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">Click Here</a>.</p>
|
718
703
|
|
719
704
|
|
720
|
-
<a id="detailed_instructions"></a>
|
721
|
-
<h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Detailed Instructions:</h2>
|
722
|
-
|
723
705
|
<a id="demo_mode_and_debugging"></a>
|
724
|
-
|
706
|
+
<h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Demo Mode / Debugging:</h2>
|
707
|
+
|
708
|
+
🔵 <b>Demo Mode</b> helps you see what a test is doing. If a test is moving too fast for your eyes, run it in <b>Demo Mode</b> to pause the browser briefly between actions, highlight page elements being acted on, and display assertions:
|
725
709
|
|
726
710
|
```bash
|
727
711
|
pytest my_first_test.py --demo
|
728
712
|
```
|
729
713
|
|
730
|
-
🔵
|
714
|
+
🔵 ``time.sleep(seconds)`` can be used to make a test wait at a specific spot:
|
731
715
|
|
732
716
|
```python
|
733
|
-
import time; time.sleep(
|
734
|
-
import pdb; pdb.set_trace() # Debug Mode. n: next, c: continue, s: step, u: up, d: down.
|
735
|
-
import pytest; pytest.set_trace() # Debug Mode. n: next, c: continue, s: step, u: up, d: down.
|
717
|
+
import time; time.sleep(3) # Do nothing for 3 seconds.
|
736
718
|
```
|
737
719
|
|
720
|
+
🔵 **Debug Mode** with Python's built-in **[pdb](https://docs.python.org/3/library/pdb.html)** library helps you debug tests:
|
721
|
+
|
722
|
+
```python
|
723
|
+
import pdb; pdb.set_trace()
|
724
|
+
import pytest; pytest.set_trace()
|
725
|
+
breakpoint() # Shortcut for "import pdb; pdb.set_trace()"
|
726
|
+
```
|
727
|
+
|
728
|
+
> (**``pdb``** commands: ``n``, ``c``, ``s``, ``u``, ``d`` => ``next``, ``continue``, ``step``, ``up``, ``down``)
|
729
|
+
|
738
730
|
🔵 To pause an active test that throws an exception or error, (*and keep the browser window open while **Debug Mode** begins in the console*), add **``--pdb``** as a ``pytest`` option:
|
739
731
|
|
740
732
|
```bash
|
@@ -747,10 +739,14 @@ pytest test_fail.py --pdb
|
|
747
739
|
pytest test_coffee_cart.py --trace
|
748
740
|
```
|
749
741
|
|
750
|
-
|
742
|
+
<a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/cdn/gif/coffee_pdbp.gif" alt="SeleniumBase test with the pdbp (Pdb+) debugger" title="SeleniumBase test with the pdbp (Pdb+) debugger" /></a>
|
743
|
+
|
744
|
+
|
745
|
+
<a id="command_line_options"></a>
|
746
|
+
<h2>🔵 Command-line Options:</h2>
|
751
747
|
|
752
748
|
<a id="pytest_options"></a>
|
753
|
-
|
749
|
+
✅ Here are some useful command-line options that come with <code>pytest</code>:
|
754
750
|
|
755
751
|
```bash
|
756
752
|
-v # Verbose mode. Prints the full name of each test and shows more details.
|
@@ -767,7 +763,7 @@ pytest test_coffee_cart.py --trace
|
|
767
763
|
```
|
768
764
|
|
769
765
|
<a id="new_pytest_options"></a>
|
770
|
-
|
766
|
+
✅ SeleniumBase provides additional <code>pytest</code> command-line options for tests:
|
771
767
|
|
772
768
|
```bash
|
773
769
|
--browser=BROWSER # (The web browser to use. Default: "chrome".)
|
@@ -864,7 +860,9 @@ pytest test_coffee_cart.py --trace
|
|
864
860
|
|
865
861
|
(See the full list of command-line option definitions **[here](https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/plugins/pytest_plugin.py)**. For detailed examples of command-line options, see **[customizing_test_runs.md](https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md)**)
|
866
862
|
|
867
|
-
|
863
|
+
--------
|
864
|
+
|
865
|
+
🔵 During test failures, logs and screenshots from the most recent test run will get saved to the ``latest_logs/`` folder. Those logs will get moved to ``archived_logs/`` if you add --archive_logs to command-line options, or have ``ARCHIVE_EXISTING_LOGS`` set to True in [settings.py](https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/config/settings.py), otherwise log files with be cleaned up at the start of the next test run. The ``test_suite.py`` collection contains tests that fail on purpose so that you can see how logging works.
|
868
866
|
|
869
867
|
```bash
|
870
868
|
cd examples/
|
@@ -885,7 +883,7 @@ Inside your tests, you can use ``self.data`` to access that.
|
|
885
883
|
<a id="directory_configuration"></a>
|
886
884
|
<h2><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Directory Configuration:</h2>
|
887
885
|
|
888
|
-
🔵 When running tests with **pytest**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** in your root folders. When running tests with **pynose**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** in your root folders. These files specify default configuration details for tests. Folders should also include a blank ``__init__.py`` file
|
886
|
+
🔵 When running tests with **pytest**, you'll want a copy of **[pytest.ini](https://github.com/seleniumbase/SeleniumBase/blob/master/pytest.ini)** in your root folders. When running tests with **pynose**, you'll want a copy of **[setup.cfg](https://github.com/seleniumbase/SeleniumBase/blob/master/setup.cfg)** in your root folders. These files specify default configuration details for tests. Folders should also include a blank ``__init__.py`` file to allow your tests to import files from that folder.
|
889
887
|
|
890
888
|
🔵 ``sbase mkdir DIR`` creates a folder with config files and sample tests:
|
891
889
|
|
@@ -1133,7 +1131,7 @@ pytest user_agent_test.py --agent="Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1
|
|
1133
1131
|
<ul>
|
1134
1132
|
<li>You can set up a <a href="https://jenkins.io/" target="_blank">Jenkins</a> build server for running tests at regular intervals. For a real-world Jenkins example of headless browser automation in action, check out the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/azure/jenkins/ReadMe.md">SeleniumBase Jenkins example on Azure</a> or the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/google_cloud/ReadMe.md">SeleniumBase Jenkins example on Google Cloud</a>.</li>
|
1135
1133
|
|
1136
|
-
<li>You can use <a href="https://selenium.dev/documentation/en/grid/" target="_blank">the Selenium Grid</a> to scale your testing by distributing tests on several machines with parallel execution. To do this, check out the <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/utilities/selenium_grid">SeleniumBase selenium_grid folder</a>, which should have everything you need, including the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">Selenium Grid ReadMe</a
|
1134
|
+
<li>You can use <a href="https://selenium.dev/documentation/en/grid/" target="_blank">the Selenium Grid</a> to scale your testing by distributing tests on several machines with parallel execution. To do this, check out the <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/utilities/selenium_grid">SeleniumBase selenium_grid folder</a>, which should have everything you need, including the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">Selenium Grid ReadMe</a> to help you get started.</li>
|
1137
1135
|
|
1138
1136
|
<li>If you're using the <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mysql_installation.md">SeleniumBase MySQL feature</a> to save results from tests running on a server machine, you can install <a href="https://dev.mysql.com/downloads/tools/workbench/">MySQL Workbench</a> to help you read & write from your DB more easily.</li>
|
1139
1137
|
|
@@ -1476,10 +1474,15 @@ pytest --reruns=1 --reruns-delay=1
|
|
1476
1474
|
|
1477
1475
|
<p>You can use the <code>@retry_on_exception()</code> decorator to retry failing methods. (First import: <code>from seleniumbase import decorators</code>). To learn more about SeleniumBase decorators, <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/common">click here</a>.</p>
|
1478
1476
|
|
1477
|
+
--------
|
1479
1478
|
|
1480
|
-
|
1479
|
+
> "Catch bugs in QA before deploying code to Production!"
|
1480
|
+
|
1481
|
+
<p align="left"><a href="https://seleniumbase.io/error_page" target="_blank"><img src="https://seleniumbase.github.io/cdn/gif/error_page.gif" alt="Catch bugs in QA before deploying code to Production!" title="Catch bugs in QA before deploying code to Production!" /></a></p>
|
1481
1482
|
|
1482
|
-
|
1483
|
+
--------
|
1484
|
+
|
1485
|
+
<h3><img src="https://seleniumbase.github.io/img/logo7.png" title="SeleniumBase" width="32" /> Wrap-Up</h3>
|
1483
1486
|
|
1484
1487
|
<p>
|
1485
1488
|
<div><b>If you see something, say something!</b></div>
|
@@ -1499,10 +1502,9 @@ pytest --reruns=1 --reruns-delay=1
|
|
1499
1502
|
<p><a href="https://pepy.tech/project/seleniumbase" target="_blank"><img src="https://pepy.tech/badge/seleniumbase" alt="SeleniumBase PyPI downloads" /></a></p>
|
1500
1503
|
|
1501
1504
|
<p><div>
|
1502
|
-
<span><a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m"><img src="https://seleniumbase.github.io/cdn/img/youtube.png" title="SeleniumBase Playlist on YouTube" alt="SeleniumBase Playlist on YouTube" width="
|
1503
|
-
<span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="
|
1504
|
-
<span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="
|
1505
|
-
<span><a href="https://twitter.com/seleniumbase" target="_blank"><img src="https://seleniumbase.io/img/social/share_twitter.svg" title="SeleniumBase on Twitter" alt="SeleniumBase on Twitter" width="50" /></a></span>
|
1505
|
+
<span><a href="https://www.youtube.com/playlist?list=PLp9uKicxkBc5UIlGi2BuE3aWC7JyXpD3m"><img src="https://seleniumbase.github.io/cdn/img/youtube.png" title="SeleniumBase Playlist on YouTube" alt="SeleniumBase Playlist on YouTube" width="70" /></a></span>
|
1506
|
+
<span><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/social/share_github.svg" title="SeleniumBase on GitHub" alt="SeleniumBase on GitHub" width="64" /></a></span>
|
1507
|
+
<span><a href="https://gitter.im/seleniumbase/SeleniumBase" target="_blank"><img src="https://seleniumbase.github.io/img/social/share_gitter.svg" title="SeleniumBase on Gitter" alt="SeleniumBase on Gitter" width="52" /></a></span>
|
1506
1508
|
</div></p>
|
1507
1509
|
|
1508
1510
|
--------
|
@@ -5,7 +5,7 @@ sbase/steps.py,sha256=RCZ_tKo7kFvgzVrHpIHb090c0on14ObIEkmMHjDURWE,38261
|
|
5
5
|
seleniumbase/ReadMe.md,sha256=5Bnv8gsyKQGABhLj0S4HXZdtVic98puQlIGYc7YHUm8,3612
|
6
6
|
seleniumbase/__init__.py,sha256=UKfONr7JsfKiXKvqdO5KJ1gMOBzvQ66PHHVAfE636ro,2068
|
7
7
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
8
|
-
seleniumbase/__version__.py,sha256=
|
8
|
+
seleniumbase/__version__.py,sha256=6-8BwblcgF0gGsFAXl-3F66xw-nBfl-5y2B6MmbqBo0,47
|
9
9
|
seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
seleniumbase/behave/behave_helper.py,sha256=KQ4rgOcWkMFSbD8QBUmevxO47M9UoSDenfoBHy9VaPk,22206
|
11
11
|
seleniumbase/behave/behave_sb.py,sha256=fU8dLa-5Ohb5xVXq9nqVXHeLV4z3RDu5AnDJVvSD60c,54220
|
@@ -49,7 +49,7 @@ seleniumbase/core/download_helper.py,sha256=YHEsFhm3sb5RRocpB9RBwAtaqUUTO6ZeQPA-
|
|
49
49
|
seleniumbase/core/encoded_images.py,sha256=rDKJ4cNJSuKiRcFViYU7bjyTS9_moI57gUPRXVg3u2k,14209
|
50
50
|
seleniumbase/core/jqc_helper.py,sha256=QANgoYpFm6rI2hlzBmfJbSqWw3XiiSESnl6laQADSUE,10423
|
51
51
|
seleniumbase/core/log_helper.py,sha256=EhN1QKxmD4gp0_F1wAWYP1bK9nJblYX50xpvdfDePQc,21822
|
52
|
-
seleniumbase/core/mysql.py,sha256=
|
52
|
+
seleniumbase/core/mysql.py,sha256=yA-KNsHN-D0YtYFxulv8ZaQOa1mNQ7pXO5_4nbSPIoA,3423
|
53
53
|
seleniumbase/core/proxy_helper.py,sha256=-1mvsxWAQ22-ckhwnZh23-A1txNZWLGTp1fB1Pq8Xi8,5103
|
54
54
|
seleniumbase/core/recorder_helper.py,sha256=RQxaD4enuQhM6gQanFVWoly57MR9TjbOoqvRorpYFh4,23021
|
55
55
|
seleniumbase/core/report_helper.py,sha256=AIl6Qava2yW1uSzbLpJBlPlYDz0KE-rVhogh8hsGWBo,12201
|
@@ -136,9 +136,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443
|
|
136
136
|
seleniumbase/utilities/selenium_ide/ReadMe.md,sha256=hznGeuMpkIimqMiZBW-4goIy2ltW4l8X9kb0YSPUQfE,4483
|
137
137
|
seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
138
138
|
seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
|
139
|
-
seleniumbase-4.15.
|
140
|
-
seleniumbase-4.15.
|
141
|
-
seleniumbase-4.15.
|
142
|
-
seleniumbase-4.15.
|
143
|
-
seleniumbase-4.15.
|
144
|
-
seleniumbase-4.15.
|
139
|
+
seleniumbase-4.15.12.dist-info/LICENSE,sha256=9CweYVs2pqSWEApWewHooJ5p5F44GV0wSXi-jV0kA_U,1085
|
140
|
+
seleniumbase-4.15.12.dist-info/METADATA,sha256=zgYLtpphMqIutEHm4lrA5RPlwKmt5r6xMB4kdMo6qyI,81504
|
141
|
+
seleniumbase-4.15.12.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
142
|
+
seleniumbase-4.15.12.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
143
|
+
seleniumbase-4.15.12.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
144
|
+
seleniumbase-4.15.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|