def mouse_move_offset(self, x_offset, y_offset):
        """
        Moving the mouse to an offset from current mouse position.

        :param x_offset: X offset to move to, as a positive or negative integer.
        :param y_offset: Y offset to move to, as a positive or negative integer.
        :return: self
        """
        return MouseAction(self.context).move_cursor_by_offset(
            x_offset, y_offset)
    def mouse_over(self,
                   locator=None,
                   wait_state=ElementWaitState.PRESENT,
                   timeout=None):
        """
        Simulate users hovering a mouse over the given element.

        :param locator: Web element or a locator string on which the click action need to be performed
        :param wait_state: he wait state for retrial. Choose state from ElementWaitState class.
        :param timeout: wait time before throwing any exception.
                    If None, timeout defaults to 20 seconds.
        :return: self
        """
        return MouseAction(self.context).move_cursor_to_element(
            locator, wait_state, timeout)
    def right_click(self,
                    locator=None,
                    wait_state=ElementWaitState.PRESENT,
                    timeout=None):
        """
                Right-clicks an element.

                :param locator: Web element or a locator string on which the click action need to be performed
                :param wait_state: he wait state for retrial. Choose state from ElementWaitState class.
                :param timeout: wait time before throwing any exception.
                            If None, timeout defaults to 20 seconds.
                :return: self
                """
        return MouseAction(self.context).context_click(locator, wait_state,
                                                       timeout)
    def drag_and_drop(self,
                      source,
                      target,
                      wait_state=ElementWaitState.PRESENT,
                      timeout=None):
        """
                Drag an object and drop it onto another object. Holds down the left mouse button on the source element,
                then moves to the target element and releases the mouse button.

                :param source: The element to mouse down. (element to be moved). Can be a locator string or an web element
                :param target: The element to mouse up. (destination location). Can be locator string or an web element
                :param wait_state: he wait state for retrial. Choose state from ElementWaitState class.
                :param timeout: wait time before throwing any exception.
                            If None, timeout defaults to 20 seconds.
                :return: self
                """
        return MouseAction(self.context).drag_and_drop_to_object(
            source, target, wait_state, timeout)
    def drag_and_drop_by_offset(self,
                                src_locator,
                                x_offset,
                                y_offset,
                                wait_state=ElementWaitState.PRESENT,
                                timeout=None):
        """
               Drag an object and drop it to an offset location. Holds down the left mouse button on the source element,
               then moves to the target offset and releases the mouse button.

               :param src_locator: The element to mouse down. (element to be moved). Can be a locator string or an web element
               :param x_offset: X offset to move to
               :param y_offset: Y offset to move to.
               :param wait_state: he wait state for retrial. Choose state from ElementWaitState class.
               :param timeout: wait time before throwing any exception.
                           If None, timeout defaults to 20 seconds.
               :return: self
               """
        return MouseAction(self.context).drag_and_drop_by_offset(
            src_locator, x_offset, y_offset, wait_state, timeout)
    def mouse_over_offset(self,
                          locator,
                          x_offset,
                          y_offset,
                          wait_state=ElementWaitState.PRESENT,
                          timeout=None):
        """
               Simulate users hovering a mouse over the given element with the relative position (x, y)
               from the top-left corner of that element.

               :param locator: locator: Web element or a locator string on which the click action need to be performed
               :param x_offset: X offset to move to, as a positive or negative integer.
               :param y_offset: Y offset to move to, as a positive or negative integer.
               :param wait_state: he wait state for retrial. Choose state from ElementWaitState class.
               :param timeout: wait time before throwing any exception.
                           If None, timeout defaults to 20 seconds.
               :return: self
               """
        return MouseAction(self.context).move_cursor_to_element_by_offset(
            locator, x_offset, y_offset, wait_state, timeout)
    def click(self,
              locator=None,
              click_method=ClickMethod.API_CLICK,
              wait_state=ElementWaitState.PRESENT,
              timeout=None):
        """
        Simulates user clicking on an element with different click methods available.

            :param locator: Web element or a locator string on which the click action need to be performed
            :param click_method: Method to perform click and  by default  click_method=ClickMethod.API_CLICK
            Available methods are:
                API_CLICK
                JAVA_SCRIPT_CLICK
                ACTION_CHAIN_CLICK
            :param wait_state: he wait state for retrial. Choose state from ElementWaitState class.
            :param timeout: wait time before throwing any exception.
                            If None, timeout defaults to 20 seconds.
            :return: self
        """
        return MouseAction(self.context).click_web_element(
            locator, click_method, wait_state, timeout)