Skip to content

Commit 1e219ce

Browse files
authored
Merge pull request #2125 from seleniumbase/driver-updates-and-internal-methods
`driver` updates and internal methods
2 parents bfa01d8 + 3b447b3 commit 1e219ce

File tree

8 files changed

+115
-63
lines changed

8 files changed

+115
-63
lines changed

help_docs/method_summary.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,8 @@ self.process_deferred_asserts(print_only=False)
914914

915915
self.fail(msg=None) # Inherited from "unittest"
916916

917+
self._check_browser() # Fails test cleanly if the active window is closed
918+
917919
self._print(TEXT) # Calls Python's print() / Allows for translations
918920
```
919921

mkdocs_build/requirements.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# mkdocs dependencies for generating the seleniumbase.io website
22
# Minimum Python version: 3.8 (for generating docs only)
33

4-
regex>=2023.8.8
4+
regex>=2022.10.31
55
PyYAML>=6.0.1
66
pymdown-extensions>=10.3
77
pipdeptree>=2.13.0
@@ -19,8 +19,8 @@ Babel==2.12.1
1919
paginate==0.5.6
2020
pyquery==2.0.0
2121
readtime==3.0.0
22-
mkdocs==1.5.2
23-
mkdocs-material==9.3.1
22+
mkdocs==1.5.3
23+
mkdocs-material==9.3.2
2424
mkdocs-exclude-search==0.6.5
2525
mkdocs-simple-hooks==0.1.5
26-
mkdocs-material-extensions==1.1.1
26+
mkdocs-material-extensions==1.2

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ wsproto==1.2.0
2727
selenium==4.11.2
2828
cssselect==1.2.0
2929
sortedcontainers==2.4.0
30-
fasteners==0.18
30+
fasteners==0.19
3131
execnet==2.0.2
3232
iniconfig==2.0.0
3333
pluggy==1.2.0;python_version<"3.8"
@@ -56,7 +56,7 @@ pyotp==2.9.0
5656
markdown-it-py==2.2.0;python_version<"3.8"
5757
markdown-it-py==3.0.0;python_version>="3.8"
5858
mdurl==0.1.2
59-
rich==13.5.2
59+
rich==13.5.3
6060

6161
# --- Testing Requirements --- #
6262
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.18.7"
2+
__version__ = "4.18.8"

seleniumbase/core/browser_launcher.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,10 @@ def make_driver_executable_if_not(driver_path):
107107

108108
def extend_driver(driver):
109109
# Extend the driver with new methods
110+
driver.default_find_element = driver.find_element
110111
DM = sb_driver.DriverMethods(driver)
112+
driver.find_element = DM.find_element
113+
driver.locator = DM.locator
111114
page = types.SimpleNamespace()
112115
page.open = DM.open_url
113116
page.click = DM.click
@@ -2168,9 +2171,6 @@ def get_local_driver(
21682171
major_edge_version = None
21692172
if major_edge_version:
21702173
use_version = major_edge_version
2171-
use_version = find_edgedriver_version_to_use(
2172-
use_version, driver_version
2173-
)
21742174
edge_driver_version = None
21752175
edgedriver_upgrade_needed = False
21762176
if os.path.exists(LOCAL_EDGEDRIVER):
@@ -2197,8 +2197,13 @@ def get_local_driver(
21972197
output = 0
21982198
if int(output) >= 2:
21992199
edge_driver_version = output
2200+
if driver_version == "keep":
2201+
driver_version = edge_driver_version
22002202
except Exception:
22012203
pass
2204+
use_version = find_edgedriver_version_to_use(
2205+
use_version, driver_version
2206+
)
22022207
local_edgedriver_exists = False
22032208
if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
22042209
local_edgedriver_exists = True
@@ -2671,6 +2676,8 @@ def get_local_driver(
26712676
output = full_ch_driver_version.split(".")[0]
26722677
if int(output) >= 2:
26732678
ch_driver_version = output
2679+
if driver_version == "keep":
2680+
driver_version = ch_driver_version
26742681
except Exception:
26752682
pass
26762683
elif path_chromedriver:
@@ -2693,8 +2700,21 @@ def get_local_driver(
26932700
output = full_ch_driver_version.split(".")[0]
26942701
if int(output) >= 2:
26952702
ch_driver_version = output
2703+
if driver_version == "keep":
2704+
use_version = ch_driver_version
26962705
except Exception:
26972706
pass
2707+
disable_build_check = True
2708+
uc_driver_version = None
2709+
if is_using_uc(undetectable, browser_name):
2710+
uc_driver_version = get_uc_driver_version()
2711+
if multi_proxy:
2712+
sb_config.multi_proxy = True
2713+
if uc_driver_version and driver_version == "keep":
2714+
driver_version = uc_driver_version
2715+
use_version = find_chromedriver_version_to_use(
2716+
use_version, driver_version
2717+
)
26982718
if headless2:
26992719
try:
27002720
if use_version == "latest" or int(use_version) >= 109:
@@ -2719,15 +2739,6 @@ def get_local_driver(
27192739
elif headless:
27202740
if "--headless" not in chrome_options.arguments:
27212741
chrome_options.add_argument("--headless")
2722-
disable_build_check = True # True is NEW for Chrome 115 changes!
2723-
uc_driver_version = None
2724-
if is_using_uc(undetectable, browser_name):
2725-
uc_driver_version = get_uc_driver_version()
2726-
if multi_proxy:
2727-
sb_config.multi_proxy = True
2728-
use_version = find_chromedriver_version_to_use(
2729-
use_version, driver_version
2730-
)
27312742
if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
27322743
try:
27332744
make_driver_executable_if_not(LOCAL_CHROMEDRIVER)

seleniumbase/core/sb_driver.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
11
"""Add new methods to extend the driver"""
22
from seleniumbase.fixtures import js_utils
33
from seleniumbase.fixtures import page_actions
4+
from seleniumbase.fixtures import page_utils
45

56

67
class DriverMethods():
78
def __init__(self, driver):
89
self.driver = driver
910

11+
def find_element(self, by, value=None):
12+
if not value:
13+
value = by
14+
by = "css selector"
15+
else:
16+
value, by = page_utils.swap_selector_and_by_if_reversed(value, by)
17+
return self.driver.default_find_element(by=by, value=value)
18+
19+
def locator(self, selector, by=None):
20+
if not by:
21+
by = "css selector"
22+
else:
23+
selector, by = page_utils.swap_selector_and_by_if_reversed(
24+
selector, by
25+
)
26+
try:
27+
return self.driver.default_find_element(by=by, value=selector)
28+
except Exception:
29+
pass
30+
raise Exception('No such Element: {%s} (by="%s")!' % (selector, by))
31+
1032
def open_url(self, *args, **kwargs):
1133
page_actions.open_url(self.driver, *args, **kwargs)
1234

0 commit comments

Comments
 (0)