File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
13
13
14
14
- Added ` speed ` in ` Tab.scroll_down ` and ` Tab.scroll_up ` methods to control the scroll speed @nathanfallet
15
15
- Allow to wait for promise in ` Element.apply ` method @nathanfallet
16
+ - Added ` Element.clear_input_by_deleting ` to handle inputs with custom delete behavior @nathanfallet
16
17
17
18
### Changed
18
19
Original file line number Diff line number Diff line change @@ -694,6 +694,39 @@ async def clear_input(self):
694
694
"""clears an input field"""
695
695
return await self .apply ('function (element) { element.value = "" } ' )
696
696
697
+ async def clear_input_by_deleting (self ):
698
+ """
699
+ clears the input of the element by simulating a series of delete key presses.
700
+
701
+ this method applies a JavaScript function that simulates pressing the delete key
702
+ repeatedly until the input is empty. it is useful for clearing input fields or text areas
703
+ when :func:`clear_input` does not work (for example, when custom input handling is implemented on the page).
704
+ """
705
+ return await self .apply (
706
+ """
707
+ async function clearByDeleting(n, d = 50) {
708
+ n.focus();
709
+ n.setSelectionRange(0, 0);
710
+ while (n.value.length > 0) {
711
+ n.dispatchEvent(
712
+ new KeyboardEvent("keydown", {
713
+ key: "Delete",
714
+ code: "Delete",
715
+ keyCode: 46,
716
+ which: 46,
717
+ bubbles: !0,
718
+ cancelable: !0,
719
+ })
720
+ );
721
+ n.value = n.value.slice(1);
722
+ await new Promise((r) => setTimeout(r, d));
723
+ }
724
+ n.dispatchEvent(new Event("input", { bubbles: !0 }));
725
+ }
726
+ """ ,
727
+ await_promise = True ,
728
+ )
729
+
697
730
async def send_keys (self , text : str , special_characters : bool = False ):
698
731
"""
699
732
send text to an input field, or any other html element.
You can’t perform that action at this time.
0 commit comments