Skip to content

Commit 9edc119

Browse files
committed
Make improvements to Recorder Mode
1 parent 17dd2c5 commit 9edc119

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

seleniumbase/extensions/recorder.zip

10 Bytes
Binary file not shown.

seleniumbase/fixtures/base_case.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4837,6 +4837,7 @@ def __process_recorded_actions(self):
48374837
ext_actions.append("js_cl")
48384838
ext_actions.append("js_ca")
48394839
ext_actions.append("js_ty")
4840+
ext_actions.append("s_val")
48404841
ext_actions.append("jq_cl")
48414842
ext_actions.append("jq_ca")
48424843
ext_actions.append("jq_ty")
@@ -4927,6 +4928,11 @@ def __process_recorded_actions(self):
49274928
for n in range(len(srt_actions)):
49284929
if srt_actions[n][0] == "ch_cl":
49294930
srt_actions[n][0] = "js_cl"
4931+
for n in range(len(srt_actions)):
4932+
if srt_actions[n][0] == "s_val":
4933+
srt_actions[n][0] = "set_v"
4934+
srt_actions[n][2] = srt_actions[n][1][1]
4935+
srt_actions[n][1] = srt_actions[n][1][0]
49304936

49314937
# Generate the script from processed actions
49324938
sb_actions = recorder_helper.generate_sbase_code(srt_actions)
@@ -7496,19 +7502,23 @@ def set_value(
74967502
css_selector = re.escape(css_selector) # Add "\\" to special chars
74977503
css_selector = self.__escape_quotes_if_needed(css_selector)
74987504
the_type = None
7505+
if ":contains\\(" not in css_selector:
7506+
get_type_script = (
7507+
"""return document.querySelector('%s').getAttribute('type');"""
7508+
% css_selector
7509+
)
7510+
the_type = self.execute_script(get_type_script) # Used later
74997511
if self.recorder_mode and self.__current_url_is_recordable():
75007512
if self.get_session_storage_item("pause_recorder") == "no":
75017513
time_stamp = self.execute_script("return Date.now();")
75027514
origin = self.get_origin()
75037515
sel_tex = [pre_escape_css_selector, text]
7504-
action = ["js_ty", sel_tex, origin, time_stamp]
7516+
if the_type == "range" and ":contains\\(" not in css_selector:
7517+
action = ["s_val", sel_tex, origin, time_stamp]
7518+
else:
7519+
action = ["js_ty", sel_tex, origin, time_stamp]
75057520
self.__extra_actions.append(action)
75067521
if ":contains\\(" not in css_selector:
7507-
get_type_script = (
7508-
"""return document.querySelector('%s').getAttribute('type');"""
7509-
% css_selector
7510-
)
7511-
the_type = self.execute_script(get_type_script) # Used later
75127522
script = """document.querySelector('%s').value='%s';""" % (
75137523
css_selector,
75147524
value,

seleniumbase/js_code/recorder_js.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
var selector = el.nodeName.toLowerCase();
1111
if (el.id) {
1212
elid = el.id;
13-
if (elid.includes(',') || elid.includes('.') ||
13+
if (elid.includes(',') || elid.includes('.') || /\s/.test(elid) ||
1414
elid.includes('(') || elid.includes(')') || hasDigit(elid[0]))
1515
return cssPathByAttribute(el, 'id');
1616
selector += '#' + elid;

0 commit comments

Comments
 (0)