Skip to content

Commit cd4b881

Browse files
committed
Make improvements to "set_value()" to account for listeners
1 parent e955a1b commit cd4b881

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4422,7 +4422,13 @@ def set_value(
44224422
value = self.__escape_quotes_if_needed(value)
44234423
css_selector = re.escape(css_selector) # Add "\\" to special chars
44244424
css_selector = self.__escape_quotes_if_needed(css_selector)
4425+
the_type = None
44254426
if ":contains\\(" not in css_selector:
4427+
get_type_script = (
4428+
"""return document.querySelector('%s').getAttribute('type');"""
4429+
% css_selector
4430+
)
4431+
the_type = self.execute_script(get_type_script) # Used later
44264432
script = """document.querySelector('%s').value='%s';""" % (
44274433
css_selector,
44284434
value,
@@ -4438,6 +4444,19 @@ def set_value(
44384444
element.send_keys(Keys.RETURN)
44394445
if settings.WAIT_FOR_RSC_ON_PAGE_LOADS:
44404446
self.wait_for_ready_state_complete()
4447+
else:
4448+
if the_type == "range" and ":contains\\(" not in css_selector:
4449+
# Some input sliders need a mouse event to trigger listeners.
4450+
try:
4451+
mouse_move_script = (
4452+
"""m_elm = document.querySelector('%s');"""
4453+
"""m_evt = new Event('mousemove');"""
4454+
"""m_elm.dispatchEvent(m_evt);"""
4455+
% css_selector
4456+
)
4457+
self.execute_script(mouse_move_script)
4458+
except Exception:
4459+
pass
44414460
self.__demo_mode_pause_if_active()
44424461

44434462
def js_update_text(self, selector, text, by=By.CSS_SELECTOR, timeout=None):

0 commit comments

Comments
 (0)