Skip to content

Commit 584319e

Browse files
Merge pull request #635 from AutomationSolutionz/bug-158-keystroke-keys
Ctrl+V issue for modern js library input is now fixed
2 parents b611b0d + b7447d6 commit 584319e

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

Framework/Built_In_Automation/Web/Selenium/BuiltInFunctions.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,25 +1808,31 @@ def Keystroke_For_Element(data_set):
18081808
# simple text paste
18091809
try:
18101810
if get_element:
1811-
selenium_driver.execute_script(
1812-
"arguments[0].focus();", Element
1813-
)
18141811
selenium_driver.execute_script(
18151812
"""
1816-
arguments[0].value = arguments[1];
1817-
arguments[0].dispatchEvent(new Event('input', { bubbles: true }));
1818-
arguments[0].dispatchEvent(new Event('change', { bubbles: true }));
1813+
var el = arguments[0];
1814+
var text = arguments[1];
1815+
var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
1816+
nativeInputValueSetter.call(el, text);
1817+
el.dispatchEvent(new Event('input', { bubbles: true }));
1818+
el.dispatchEvent(new Event('change', { bubbles: true }));
1819+
el.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
1820+
el.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
18191821
""",
18201822
Element,
18211823
pyperclip.paste(),
18221824
)
18231825
else:
18241826
selenium_driver.execute_script(
18251827
"""
1828+
var el = document.activeElement;
18261829
var text = arguments[0];
1827-
document.activeElement.value += text;
1828-
document.activeElement.dispatchEvent(new Event('input', { bubbles: true }));
1829-
document.activeElement.dispatchEvent(new Event('change', { bubbles: true }));
1830+
var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
1831+
nativeInputValueSetter.call(el, text);
1832+
el.dispatchEvent(new Event('input', { bubbles: true }));
1833+
el.dispatchEvent(new Event('change', { bubbles: true }));
1834+
el.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
1835+
el.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
18301836
""",
18311837
pyperclip.paste(),
18321838
)

0 commit comments

Comments
 (0)