Skip to content

Commit 072ecc8

Browse files
committed
Add "Recorder Mode"
1 parent f1e6622 commit 072ecc8

File tree

13 files changed

+886
-3
lines changed

13 files changed

+886
-3
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ images_exported
124124
# Cookies
125125
saved_cookies
126126

127+
# Recordings
128+
recordings
129+
127130
# Automated Visual Testing
128131
visual_baseline
129132

examples/raw_parameter_script.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@
7070
sb.with_db_reporting = False
7171
sb.with_s3_logging = False
7272
sb.js_checking_on = False
73+
sb.recorder_mode = False
74+
sb.recorder_ext = False
7375
sb.report_on = False
7476
sb.is_pytest = False
7577
sb.slow_mode = False

examples/setup.cfg

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
[flake8]
2+
exclude=recordings,temp
3+
14
[nosetests]
25
# This is the config file for default values used during nosetest runs
36
# nocapture=1 displays print statements from output. Undo this by using: --nologcapture
47
# logging-level=INFO keeps the logs much cleaner than using DEBUG
58
nocapture=1
6-
logging-level=INFO
9+
logging-level=INFO

seleniumbase/console_scripts/sb_mkdir.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@ def main():
162162
file.close()
163163

164164
data = []
165+
data.append("[flake8]")
166+
data.append("exclude=recordings,temp")
167+
data.append("")
165168
data.append("[nosetests]")
166169
data.append("nocapture=1")
167170
data.append("logging-level=INFO")
@@ -268,6 +271,7 @@ def main():
268271
data.append("tours_exported")
269272
data.append("images_exported")
270273
data.append("saved_cookies")
274+
data.append("recordings")
271275
data.append("visual_baseline")
272276
data.append("selenium-server-standalone.jar")
273277
data.append("proxy.zip")
@@ -379,6 +383,10 @@ def main():
379383
data.append(' self.click(".fBox")')
380384
data.append(' self.assert_true(self.is_selected(".fBox"))')
381385
data.append(" self.switch_to_default_content()")
386+
data.append(
387+
' self.assert_element_not_visible("div#drop2 img#logo")')
388+
data.append(' self.drag_and_drop("img#logo", "div#drop2")')
389+
data.append(' self.assert_element("div#drop2 img#logo")')
382390
data.append(' self.assert_link_text("seleniumbase.com")')
383391
data.append(' self.assert_link_text("SeleniumBase on GitHub")')
384392
data.append(' self.assert_link_text("seleniumbase.io")')

seleniumbase/core/browser_launcher.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
os.environ["PATH"] = DRIVER_DIR + os.pathsep + os.environ["PATH"]
2929
EXTENSIONS_DIR = os.path.dirname(os.path.realpath(extensions.__file__))
3030
DISABLE_CSP_ZIP_PATH = "%s/%s" % (EXTENSIONS_DIR, "disable_csp.zip")
31+
RECORDER_ZIP_PATH = "%s/%s" % (EXTENSIONS_DIR, "recorder.zip")
3132
PROXY_ZIP_PATH = proxy_helper.PROXY_ZIP_PATH
3233
PROXY_ZIP_PATH_2 = proxy_helper.PROXY_ZIP_PATH_2
3334
PROXY_ZIP_LOCK = proxy_helper.PROXY_ZIP_LOCK
@@ -198,6 +199,13 @@ def _add_chrome_disable_csp_extension(chrome_options):
198199
return chrome_options
199200

200201

202+
def _add_chrome_recorder_extension(chrome_options):
203+
"""The SeleniumBase Recorder Chromium extension."""
204+
recorder_zip = RECORDER_ZIP_PATH
205+
chrome_options.add_extension(recorder_zip)
206+
return chrome_options
207+
208+
201209
def _set_chrome_options(
202210
browser_name,
203211
downloads_path,
@@ -208,6 +216,7 @@ def _set_chrome_options(
208216
proxy_user,
209217
proxy_pass,
210218
user_agent,
219+
recorder_ext,
211220
disable_csp,
212221
enable_ws,
213222
enable_sync,
@@ -317,6 +326,7 @@ def _set_chrome_options(
317326
if (
318327
not proxy_auth
319328
and not disable_csp
329+
and not recorder_ext
320330
and (not extension_zip and not extension_dir)
321331
):
322332
if incognito:
@@ -382,6 +392,8 @@ def _set_chrome_options(
382392
# for disabling the Content Security Policy on Chrome
383393
chrome_options = _add_chrome_disable_csp_extension(chrome_options)
384394
chrome_options.add_argument("--enable-sync")
395+
if recorder_ext and not headless:
396+
chrome_options = _add_chrome_recorder_extension(chrome_options)
385397
if proxy_string:
386398
if proxy_auth:
387399
chrome_options = _add_chrome_proxy_extension(
@@ -663,6 +675,7 @@ def get_driver(
663675
user_agent=None,
664676
cap_file=None,
665677
cap_string=None,
678+
recorder_ext=None,
666679
disable_csp=None,
667680
enable_ws=None,
668681
enable_sync=None,
@@ -735,6 +748,7 @@ def get_driver(
735748
user_agent,
736749
cap_file,
737750
cap_string,
751+
recorder_ext,
738752
disable_csp,
739753
enable_ws,
740754
enable_sync,
@@ -770,6 +784,7 @@ def get_driver(
770784
proxy_user,
771785
proxy_pass,
772786
user_agent,
787+
recorder_ext,
773788
disable_csp,
774789
enable_ws,
775790
enable_sync,
@@ -809,6 +824,7 @@ def get_remote_driver(
809824
user_agent,
810825
cap_file,
811826
cap_string,
827+
recorder_ext,
812828
disable_csp,
813829
enable_ws,
814830
enable_sync,
@@ -872,6 +888,7 @@ def get_remote_driver(
872888
proxy_user,
873889
proxy_pass,
874890
user_agent,
891+
recorder_ext,
875892
disable_csp,
876893
enable_ws,
877894
enable_sync,
@@ -1024,6 +1041,7 @@ def get_local_driver(
10241041
proxy_user,
10251042
proxy_pass,
10261043
user_agent,
1044+
recorder_ext,
10271045
disable_csp,
10281046
enable_ws,
10291047
enable_sync,
@@ -1190,6 +1208,7 @@ def get_local_driver(
11901208
proxy_user,
11911209
proxy_pass,
11921210
user_agent,
1211+
recorder_ext,
11931212
disable_csp,
11941213
enable_ws,
11951214
enable_sync,
@@ -1324,6 +1343,9 @@ def get_local_driver(
13241343
# for disabling the Content Security Policy on Edge
13251344
edge_options = _add_chrome_disable_csp_extension(edge_options)
13261345
edge_options.add_argument("--enable-sync")
1346+
if recorder_ext and not headless:
1347+
edge_options = _add_chrome_recorder_extension(edge_options)
1348+
edge_options.add_argument("--enable-sync")
13271349
if proxy_string:
13281350
if proxy_auth:
13291351
edge_options = _add_chrome_proxy_extension(
@@ -1397,6 +1419,7 @@ def get_local_driver(
13971419
proxy_user,
13981420
proxy_pass,
13991421
user_agent,
1422+
recorder_ext,
14001423
disable_csp,
14011424
enable_ws,
14021425
enable_sync,
@@ -1440,6 +1463,7 @@ def get_local_driver(
14401463
proxy_user,
14411464
proxy_pass,
14421465
user_agent,
1466+
recorder_ext,
14431467
disable_csp,
14441468
enable_ws,
14451469
enable_sync,
@@ -1520,6 +1544,7 @@ def get_local_driver(
15201544
proxy_user,
15211545
proxy_pass,
15221546
user_agent,
1547+
recorder_ext,
15231548
disable_csp,
15241549
enable_ws,
15251550
enable_sync,

seleniumbase/extensions/recorder.zip

9.98 KB
Binary file not shown.

0 commit comments

Comments
 (0)