B
     ธh\  ใ               @   s$   d Z ddlmZ G dd deZdS )z"
The Touch Actions implementation
้    )ฺCommandc               @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )ฺTouchActionsz
    Generate touch actions. Works like ActionChains; actions are stored in the
    TouchActions object and are fired with perform().
    c             C   s   || _ g | _dS )zฝ
        Creates a new TouchActions object.

        :Args:
         - driver: The WebDriver instance which performs user actions.
           It should be with touchscreen enabled.
        N)ฺ_driverฺ_actions)ฺselfฺdriverฉ r   ๚dC:\Users\sanjo\AppData\Local\Qlobot\Launcher\ext_packages\selenium\webdriver\common\touch_actions.pyฺ__init__   s    zTouchActions.__init__c             C   s   x| j D ]
}|  qW dS )z.
        Performs all stored actions.
        N)r   )r   ฺactionr   r   r	   ฺperform*   s    zTouchActions.performc                s   j   fddก S )ze
        Taps on a given element.

        :Args:
         - on_element: The element to tap.
        c                  s   j  tjd jiกS )Nฺelement)r   ฺexecuter   ฺ
SINGLE_TAPฺidr   )ฺ
on_elementr   r   r	   ฺ<lambda>8   s   z"TouchActions.tap.<locals>.<lambda>)r   ฺappend)r   r   r   )r   r   r	   ฺtap1   s    zTouchActions.tapc                s   j   fddก S )zl
        Double taps on a given element.

        :Args:
         - on_element: The element to tap.
        c                  s   j  tjd jiกS )Nr   )r   r   r   ฺ
DOUBLE_TAPr   r   )r   r   r   r	   r   C   s   z)TouchActions.double_tap.<locals>.<lambda>)r   r   )r   r   r   )r   r   r	   ฺ
double_tap<   s    zTouchActions.double_tapc                s    j   fddก  S )z 
        Touch down at given coordinates.

        :Args:
         - xcoord: X Coordinate to touch down.
         - ycoord: Y Coordinate to touch down.
        c                  s    j  tjttdกS )N)ฺxฺy)r   r   r   ฺ
TOUCH_DOWNฺintr   )r   ฺxcoordฺycoordr   r	   r   O   s   z+TouchActions.tap_and_hold.<locals>.<lambda>)r   r   )r   r   r   r   )r   r   r   r	   ฺtap_and_holdG   s    zTouchActions.tap_and_holdc                s    j   fddก  S )z
        Move held tap to specified location.

        :Args:
         - xcoord: X Coordinate to move.
         - ycoord: Y Coordinate to move.
        c                  s    j  tjttdกS )N)r   r   )r   r   r   ฺ
TOUCH_MOVEr   r   )r   r   r   r   r	   r   ]   s   z#TouchActions.move.<locals>.<lambda>)r   r   )r   r   r   r   )r   r   r   r	   ฺmoveU   s    zTouchActions.movec                s    j   fddก  S )zม
        Release previously issued tap 'and hold' command at specified location.

        :Args:
         - xcoord: X Coordinate to release.
         - ycoord: Y Coordinate to release.
        c                  s    j  tjttdกS )N)r   r   )r   r   r   ฺTOUCH_UPr   r   )r   r   r   r   r	   r   k   s   z&TouchActions.release.<locals>.<lambda>)r   r   )r   r   r   r   )r   r   r   r	   ฺreleasec   s    zTouchActions.releasec                s    j   fddก  S )zจ
        Touch and scroll, moving by xoffset and yoffset.

        :Args:
         - xoffset: X offset to scroll to.
         - yoffset: Y offset to scroll to.
        c                  s    j  tjttdกS )N)ฺxoffsetฺyoffset)r   r   r   ฺTOUCH_SCROLLr   r   )r   r"   r#   r   r	   r   y   s   z%TouchActions.scroll.<locals>.<lambda>)r   r   )r   r"   r#   r   )r   r"   r#   r	   ฺscrollq   s    zTouchActions.scrollc                s   j   fddก S )z๗
        Touch and scroll starting at on_element, moving by xoffset and yoffset.

        :Args:
         - on_element: The element where scroll starts.
         - xoffset: X offset to scroll to.
         - yoffset: Y offset to scroll to.
        c                  s"   j  tj jttdกS )N)r   r"   r#   )r   r   r   r$   r   r   r   )r   r   r"   r#   r   r	   r      s   z2TouchActions.scroll_from_element.<locals>.<lambda>)r   r   )r   r   r"   r#   r   )r   r   r"   r#   r	   ฺscroll_from_element   s    	z TouchActions.scroll_from_elementc                s   j   fddก S )zm
        Long press on an element.

        :Args:
         - on_element: The element to long press.
        c                  s   j  tjd jiกS )Nr   )r   r   r   ฺ
LONG_PRESSr   r   )r   r   r   r	   r      s   z)TouchActions.long_press.<locals>.<lambda>)r   r   )r   r   r   )r   r   r	   ฺ
long_press   s    zTouchActions.long_pressc                s    j   fddก  S )zด
        Flicks, starting anywhere on the screen.

        :Args:
         - xspeed: The X speed in pixels per second.
         - yspeed: The Y speed in pixels per second.
        c                  s    j  tjttdกS )N)ฺxspeedฺyspeed)r   r   r   ฺFLICKr   r   )r   r)   r*   r   r	   r   ข   s   z$TouchActions.flick.<locals>.<lambda>)r   r   )r   r)   r*   r   )r   r)   r*   r	   ฺflick   s    zTouchActions.flickc                s    j   fddก S )aC  
        Flick starting at on_element, and moving by the xoffset and yoffset
        with specified speed.

        :Args:
         - on_element: Flick will start at center of element.
         - xoffset: X offset to flick to.
         - yoffset: Y offset to flick to.
         - speed: Pixels per second to flick.
        c                  s(   j  tj jtttdกS )N)r   r"   r#   ฺspeed)r   r   r   r+   r   r   r   )r   r   r-   r"   r#   r   r	   r   ณ   s
   z,TouchActions.flick_element.<locals>.<lambda>)r   r   )r   r   r"   r#   r-   r   )r   r   r-   r"   r#   r	   ฺflick_elementจ   s    zTouchActions.flick_elementc             C   s   | S )Nr   )r   r   r   r	   ฺ	__enter__ผ   s    zTouchActions.__enter__c             C   s   d S )Nr   )r   ฺ_typeฺ_valueฺ
_tracebackr   r   r	   ฺ__exit__ฟ   s    zTouchActions.__exit__N)ฺ__name__ฺ
__module__ฺ__qualname__ฺ__doc__r
   r   r   r   r   r   r!   r%   r&   r(   r,   r.   r/   r3   r   r   r   r	   r      s   r   N)r7   Z!selenium.webdriver.remote.commandr   ฺobjectr   r   r   r   r	   ฺ<module>   s   