Releases: seleniumbase/SeleniumBase
Releases · seleniumbase/SeleniumBase
4.3.2 - Undetected-Chromedriver Mode updates
Undetected-Chromedriver Mode updates
- Properly parse preferences with undetected-chromedriver
--> This resolves #1492 - If using both UC Mode (
--uc
) and Headless Mode (--headless
), then try usingXvfb
on Linux; otherwise skip UC Mode while still using Headless Mode. - Refresh Python dependencies.
--> (Refresh Python dependencies)
What's Changed
Full Changelog: v4.3.1...v4.3.2
4.3.1 - Clean up resource files that have CDN links
Clean up resource files that have CDN links
- This resolves #1490
What's Changed
Full Changelog: v4.3.0...v4.3.1
4.3.0 - Undetected-Chromedriver Mode
Undetected-Chromedriver Mode
- Add option
--uc
for using an undetectable chromedriver.
--> Lets you evade bot-detection on certain websites.
--> Uses a modified version of undetected-chromedriver
--> This resolves #1483 sbase get chromedriver
should detect the version needed.
--> This resolves #1488
What's Changed
Full Changelog: v4.2.0...v4.3.0
4.2.0 - High-level options and reliability
High-level options and reliability
- Add option to change Chromium's
pageLoadStrategy
.
--> This resolves #1477 - Add option to skip JS waits, which are used in multiple methods.
--> This resolves #1478 - Improve reliability.
--> This resolves #1476 - Add a retry when downloading a driver if that fails.
--> This resolves #1481 - Include more hard-coded options for
--env=ENV
.
--> This resolves #1480 - Update translations of Demo Mode assertion messages.
--> This resolves #1479
What's Changed
Full Changelog: v4.1.1...v4.2.0
4.1.1 - Convert numbers to strings before performing text asserts
Convert numbers to strings before performing text asserts
- Convert text args to strings before performing text asserts.
--> f512989
--> This resolves #1474 - Refresh Python dependencies.
--> 5e948cb
What's Changed
Full Changelog: v4.1.0...v4.1.1
4.1.0 - Add ways to disable "beforeunload"
4.0.1 - Mostly Bug Fixes
Mostly Bug Fixes
- Fix
behave
issue that can occur during--headless
mode whenXvfb
is not present.
--> This resolves #1467 - Fix intermittent
unknown error: net::ERR_CONNECTION_CLOSED
onself.open(url)
.
--> This resolves #1469 - Fix test address in
basic_test_info.txt
for subfolder tests.
--> This resolves #1468 - Include creation of
case_summary.md
in console output.
--> This resolves #1470 - Refresh Python dependencies.
--> 2d70b0b
What's Changed
Full Changelog: v4.0.0...v4.0.1
4.0.0 - Case Plans / and more
SeleniumBase 4 / Case Plans / and more
- New Feature: SeleniumBase Case Plans - Test Case Management Software.
--> This resolves #1440
--> Documentation: help_docs/case_plans.md os.path.join()
should always be used when joining paths.
--> This resolves #1450
--> This resolves #1451- Scrolling to elements should include horizontal scrolling as needed.
--> This resolves #1459 - Skip setting the
w3c
option inbrowser_launcher.py
.
--> This avoids deprecation warnings that are new inselenium
4.4.0
and newer. - Make improvements to Recorder Mode.
--> Better selector generation and script output. - Using
self.get_text()
on a textarea should return the value property.
--> This resolves #1457 - Fix issue with log folder generation when a test using the
sb
fixture lives outside the root folder.
--> This resolves #1454 - Before a drag-and-drop action, scroll to the drop selector instead of the drag selector.
--> This prevents certain problems from happening when the two selectors are far apart. - Update line-spacing in SeleniumBase GUI Apps such as Commander/GUI and Behave GUI.
--> This prevents an issue on Windows where the lines were spaced too far apart. - Include Level-0 visual diff failures for the
side_by_side.html
files.
--> This resolves #1455 load_html_string()
should parse out comment lines that start with//
.
--> This resolves #1458- Add method:
get_select_options()
to create a list from the text ofselect
option
elements.
--> This resolves #1460 - When running
pytest
with--collect-only
/--co
, skip unnecessary plugin steps.
--> This resolves #1461 - Handle extension capabilities in the desired capabilities flow.
--> This resolves #1453
SeleniumBase Case Plans 📒🗂️
📒 SeleniumBase Case Plans is Test Case Management Software that uses Markdown tables for displaying test plans directly in GitHub (and other source code management systems that support Markdown format).
📒 The case_summary.md
file is generated from individual Case Plans that exist in the case_plans/
folders of your repository. (See the example below to learn how the Case Summary file may look.)
Example of a
case_summary.md
file:
Summary of existing Case Plans
🔵 | 8 | Case Plans with customized tables |
⭕ | 2 | Case Plans using boilerplate code |
🚧 | 1 | Case Plan that is missing a table |
🔎 (Click rows to expand) 🔍
🔵 basic_test.py::MyTestClass::test_basics
# | Step Description | Expected Result |
---|---|---|
1 | Log in to https://www.saucedemo.com with standard_user . |
Login was successful. |
2 | Click on the Backpack ADD TO CART button. |
The button text changed to REMOVE . |
3 | Click on the cart icon. | The Backpack is seen in the cart. |
4 | Remove the Backpack from the cart. |
The Backpack is no longer in the cart. |
5 | Log out from the website. | Logout was successful. |
🔵 list_assert_test.py::MyTestClass::test_assert_list_of_elements
# | Step Description | Expected Result |
---|---|---|
1 | Open https://seleniumbase.io/demo_page. | |
2 | Use self.assert_elements_present("head", "style", "script") to verify that multiple elements are present in the HTML. |
The assertion is successful. |
3 | Use self.assert_elements("h1", "h2", "h3") to verify that multiple elements are visible. |
The assertion is successful. |
4 | Use self.assert_elements(["#myDropdown", "#myButton", "#svgRect"]) to verify that multiple elements are visible. |
The assertion is successful. |
⭕ locale_code_test.py::LocaleCodeTests::test_locale_code
# | Step Description | Expected Result |
---|---|---|
1 | Perform Action 1 | Verify Action 1 |
2 | Perform Action 2 | Verify Action 2 |
🔵 my_first_test.py::MyTestClass::test_swag_labs
# | Step Description | Expected Result |
---|---|---|
1 | Log in to https://www.saucedemo.com with standard_user . |
Login was successful. |
2 | Click on the Backpack ADD TO CART button. |
The button text changed to REMOVE . |
3 | Click on the cart icon. | The Backpack is seen in the cart. |
4 | Click on the CHECKOUT button. Enter user details and click CONTINUE . |
The Backpack is seen in the cart on the CHECKOUT: OVERVIEW page. |
5 | Click on the FINISH button. |
There is a Thank You message and a Pony Express delivery logo. |
6 | Log out from the website. | Logout was successful. |
⭕ proxy_test.py::ProxyTests::test_proxy
# | Step Description | Expected Result |
---|---|---|
1 | Perform Action 1 | Verify Action 1 |
2 | Perform Action 2 | Verify Action 2 |
🔵 shadow_root_test.py::ShadowRootTest::test_shadow_root
# | Step Description | Expected Result |
---|---|---|
1 | Open https://seleniumbase.io/other/shadow_dom. Click each tab and verify the text contained within the Shadow Root sections. |
Tab 1 text: Content Panel 1 Tab 2 text: Content Panel 2 Tab 3 text: Content Panel 3 |
🚧 test_agent.py::UserAgentTests::test_user_agent
🔵 test_calculator.py::CalculatorTests::test_6_times_7_plus_12_equals_54
# | Step Description | Expected Result |
---|---|---|
1 | Open https://seleniumbase.io/apps/calculator. Perform the following calculation: 6 × 7 + 12 |
The output is 54 after pressing = |
🔵 test_demo_site.py::DemoSiteTests::test_demo_site
# | Step Description | Expected Result |
---|---|---|
1 | Open https://seleniumbase.io/demo_page | |
2 | Assert the title of the current web page. Assert that a given element is visible on the page. Assert that a text substring appears in an element's text. |
The assertions were successful. |
3 | Type text into various text fields and then verify. | The assertions were successful. |
4 | Verify that a hover dropdown link changes page text. | The assertion was successful. |
5 | Verify that a button click changes text on the page. | The assertion was successful. |
6 | Verify that an SVG element is located on the page. | The assertion was successful. |
7 | Verify that a slider control updates a progress bar. | The assertion was successful. |
8 | Verify that a "select" option updates a meter bar. | The assertion was successful. |
9 | Assert an element located inside an iFrame. | The assertion was successful. |
10 | Assert text located inside an iFrame. | The assertion was successful. |
11 | Verify that clicking a radio button selects it. | The assertion was successful. |
12 | Verify that clicking an empty checkbox makes it selected. | The assertion was successful. |
13 | Verify clicking on multiple elements with one call. | The assertions were successful. |
14 | Verify that clicking an iFrame checkbox selects it. | The assertions were successful. |
15 | Verify that Drag and Drop works. | The assertion was successful. |
16 | Assert link text. | The assertion was successful. |
17 | Verify clicking on link text. | The action was successful. |
18 | Assert exact text in an element. | The assertion was successful. |
19 | Highlight a page element. | The action was successful. |
20 | Verify that Demo Mode works. | The assertion was successful. |
🔵 test_login.py::SwagLabsLoginTests::test_swag_labs_login
# | Step Description | Expected Result |
---|---|---|
1 | Log in to https://www.saucedemo.com with standard_user . |
Login was successful. |
2 | Log out from the website. | Logout was successful. |
🔵 test_mfa_login.py::TestMFALogin::test_mfa_login
# | Step Description | Expected Result |
---|---|---|
1 | Open https://seleniumbase.io/realworld/login Enter credentials and Sign In. |
Sign In was successful. |
2 | Click the This Page button. Save a screenshot to the logs. |
|
3 | Click to Sign Out | Sign Out was successful. |
📒 Before you ...
3.5.11 - EdgeDriver Manager script update and docs
EdgeDriver Manager script update and docs
3.5.10 - Handle clicks that close the active window
Handle clicks that close the active window
- Handle clicks that close the active window
--> This resolves #1444
--> This resolves #1442 - Refresh Python dependencies