1717from typing import List , Optional , Tuple , Union
1818
1919from SeleniumLibrary .utils import is_noney
20- from SeleniumLibrary .utils .events .event import _unwrap_eventfiring_elements
20+ from SeleniumLibrary .utils .events .event import _unwrap_eventfiring_element
2121from robot .utils import plural_or_not , is_truthy
2222from selenium .webdriver .common .action_chains import ActionChains
2323from selenium .webdriver .common .keys import Keys
@@ -642,7 +642,8 @@ def _click_with_action_chain(self, locator):
642642 self .info (f"Clicking '{ locator } ' using an action chain." )
643643 action = ActionChains (self .driver )
644644 element = self .find_element (locator )
645- element = _unwrap_eventfiring_elements (self .driver , element )
645+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
646+ element = _unwrap_eventfiring_element (element )
646647 action .move_to_element (element )
647648 action .click ()
648649 action .perform ()
@@ -658,7 +659,8 @@ def _click_with_modifier(self, locator, tag, modifier):
658659 element = self .find_element (locator , tag = tag [0 ], required = False )
659660 if not element :
660661 element = self .find_element (locator , tag = tag [1 ])
661- element = _unwrap_eventfiring_elements (self .driver , element )
662+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
663+ element = _unwrap_eventfiring_element (element )
662664 action .click (element )
663665 for item in modifier :
664666 action .key_up (item )
@@ -678,15 +680,10 @@ def click_element_at_coordinates(self, locator, xoffset, yoffset):
678680 f"Clicking element '{ locator } ' at coordinates x={ xoffset } , y={ yoffset } ."
679681 )
680682 element = self .find_element (locator )
681- element = _unwrap_eventfiring_elements (self .driver ,element )
683+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
684+ element = _unwrap_eventfiring_element (element )
682685 action = ActionChains (self .driver )
683- # Try/except can be removed when minimum required Selenium is 4.0 or greater.
684- #try:
685686 action .move_to_element (element )
686- #except AttributeError:
687- # self.debug("Workaround for Selenium 3 bug.")
688- # element = element.wrapped_element
689- # action.move_to_element(element)
690687 action .move_by_offset (xoffset , yoffset )
691688 action .click ()
692689 action .perform ()
@@ -700,7 +697,8 @@ def double_click_element(self, locator: str):
700697 """
701698 self .info (f"Double clicking element '{ locator } '." )
702699 element = self .find_element (locator )
703- element = _unwrap_eventfiring_elements (self .driver , element )
700+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
701+ element = _unwrap_eventfiring_element (element )
704702 action = ActionChains (self .driver )
705703 action .double_click (element ).perform ()
706704
@@ -726,14 +724,9 @@ def scroll_element_into_view(self, locator: str):
726724 New in SeleniumLibrary 3.2.0
727725 """
728726 element = self .find_element (locator )
729- element = _unwrap_eventfiring_elements (self .driver , element )
730- # Try/except can be removed when minimum required Selenium is 4.0 or greater.
731- #try:
727+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
728+ element = _unwrap_eventfiring_element (element )
732729 ActionChains (self .driver ).move_to_element (element ).perform ()
733- #except AttributeError:
734- # self.debug("Workaround for Selenium 3 bug.")
735- # element = element.wrapped_element
736- # ActionChains(self.driver).move_to_element(element).perform()
737730
738731 @keyword
739732 def drag_and_drop (self , locator : str , target : str ):
@@ -747,8 +740,11 @@ def drag_and_drop(self, locator: str, target: str):
747740 | `Drag And Drop` | css:div#element | css:div.target |
748741 """
749742 element = self .find_element (locator )
750- element = _unwrap_eventfiring_elements (self .driver , element )
743+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
744+ element = _unwrap_eventfiring_element (element )
751745 target = self .find_element (target )
746+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
747+ target = _unwrap_eventfiring_element (target )
752748 action = ActionChains (self .driver )
753749 action .drag_and_drop (element , target ).perform ()
754750
@@ -766,7 +762,8 @@ def drag_and_drop_by_offset(self, locator: str, xoffset: int, yoffset: int):
766762 | `Drag And Drop By Offset` | myElem | 50 | -35 | # Move myElem 50px right and 35px down |
767763 """
768764 element = self .find_element (locator )
769- element = _unwrap_eventfiring_elements (self .driver , element )
765+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
766+ element = _unwrap_eventfiring_element (element )
770767 action = ActionChains (self .driver )
771768 action .drag_and_drop_by_offset (element , xoffset , yoffset )
772769 action .perform ()
@@ -785,7 +782,8 @@ def mouse_down(self, locator: str):
785782 """
786783 self .info (f"Simulating Mouse Down on element '{ locator } '." )
787784 element = self .find_element (locator )
788- element = _unwrap_eventfiring_elements (self .driver , element )
785+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
786+ element = _unwrap_eventfiring_element (element )
789787 action = ActionChains (self .driver )
790788 action .click_and_hold (element ).perform ()
791789
@@ -798,18 +796,13 @@ def mouse_out(self, locator: str):
798796 """
799797 self .info (f"Simulating Mouse Out on element '{ locator } '." )
800798 element = self .find_element (locator )
801- element = _unwrap_eventfiring_elements (self .driver , element )
799+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
800+ element = _unwrap_eventfiring_element (element )
802801 size = element .size
803802 offsetx = (size ["width" ] / 2 ) + 1
804803 offsety = (size ["height" ] / 2 ) + 1
805804 action = ActionChains (self .driver )
806- # Try/except can be removed when minimum required Selenium is 4.0 or greater.
807- #try:
808805 action .move_to_element (element )
809- #except AttributeError:
810- # self.debug("Workaround for Selenium 3 bug.")
811- # element = element.wrapped_element
812- # action.move_to_element(element)
813806 action .move_by_offset (offsetx , offsety )
814807 action .perform ()
815808
@@ -822,15 +815,10 @@ def mouse_over(self, locator: str):
822815 """
823816 self .info (f"Simulating Mouse Over on element '{ locator } '." )
824817 element = self .find_element (locator )
825- element = _unwrap_eventfiring_elements (self .driver ,element )
818+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
819+ element = _unwrap_eventfiring_element (element )
826820 action = ActionChains (self .driver )
827- # Try/except can be removed when minimum required Selenium is 4.0 or greater.
828- #try:
829821 action .move_to_element (element ).perform ()
830- #except AttributeError:
831- # self.debug("Workaround for Selenium 3 bug.")
832- # element = element.wrapped_element
833- # action.move_to_element(element).perform()
834822
835823 @keyword
836824 def mouse_up (self , locator : str ):
@@ -841,14 +829,16 @@ def mouse_up(self, locator: str):
841829 """
842830 self .info (f"Simulating Mouse Up on element '{ locator } '." )
843831 element = self .find_element (locator )
844- element = _unwrap_eventfiring_elements (self .driver , element )
832+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
833+ element = _unwrap_eventfiring_element (element )
845834 ActionChains (self .driver ).release (element ).perform ()
846835
847836 @keyword
848837 def open_context_menu (self , locator : str ):
849838 """Opens the context menu on the element identified by ``locator``."""
850839 element = self .find_element (locator )
851- element = _unwrap_eventfiring_elements (self .driver , element )
840+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
841+ element = _unwrap_eventfiring_element (element )
852842 action = ActionChains (self .driver )
853843 action .context_click (element ).perform ()
854844
@@ -937,7 +927,8 @@ def press_keys(self, locator: Optional[str] = None, *keys: str):
937927 if not is_noney (locator ):
938928 self .info (f"Sending key(s) { keys } to { locator } element." )
939929 element = self .find_element (locator )
940- element = _unwrap_eventfiring_elements (self .driver , element )
930+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
931+ element = _unwrap_eventfiring_element (element )
941932 ActionChains (self .driver ).click (element ).perform ()
942933 else :
943934 self .info (f"Sending key(s) { keys } to page." )
@@ -991,7 +982,8 @@ def mouse_down_on_link(self, locator: str):
991982 using ``id``, ``name``, ``href`` and the link text.
992983 """
993984 element = self .find_element (locator , tag = "link" )
994- element = _unwrap_eventfiring_elements (self .driver , element )
985+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
986+ element = _unwrap_eventfiring_element (element )
995987 action = ActionChains (self .driver )
996988 action .click_and_hold (element ).perform ()
997989
@@ -1034,7 +1026,8 @@ def mouse_down_on_image(self, locator: str):
10341026 using ``id``, ``name``, ``src`` and ``alt``.
10351027 """
10361028 element = self .find_element (locator , tag = "image" )
1037- element = _unwrap_eventfiring_elements (self .driver , element )
1029+ # _unwrap_eventfiring_element can be removed when minimum required Selenium is 4.0 or greater.
1030+ element = _unwrap_eventfiring_element (element )
10381031 action = ActionChains (self .driver )
10391032 action .click_and_hold (element ).perform ()
10401033
0 commit comments