def press_keycode(self, keycode: int, metastate: Optional[int] = None, flags: Optional[int] = None) -> 'WebDriver':
"""Sends a keycode to the device.
Android only. Possible keycodes can be found
in http://developer.android.com/reference/android/view/KeyEvent.html.
Args:
keycode: the keycode to be sent to the device
metastate: meta information about the keycode being sent
flags: the set of key event flags
Returns:
Union['WebDriver', 'Keyboard']: Self instance
"""
ext_name = 'mobile: pressKey'
args = {'keycode': keycode}
if metastate is not None:
args['metastate'] = metastate
if flags is not None:
args['flags'] = flags
try:
self.assert_extension_exists(ext_name).execute_script(ext_name, args)
except UnknownMethodException:
# TODO: Remove the fallback
self.mark_extension_absence(ext_name).execute(Command.PRESS_KEYCODE, args)
return cast('WebDriver', self)
def swipe(self, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0) -> 'WebDriver':
"""Swipe from one point to another point, for an optional duration.
Args:
start_x: x-coordinate at which to start
start_y: y-coordinate at which to start
end_x: x-coordinate at which to stop
end_y: y-coordinate at which to stop
duration: defines the swipe speed as time taken to swipe from point a to point b, in ms.
Usage:
driver.swipe(100, 100, 100, 400)
Returns:
Union['WebDriver', 'ActionHelpers']: Self instance
"""
touch_input = PointerInput(interaction.POINTER_TOUCH, "touch")
actions = ActionChains(self)
actions.w3c_actions = ActionBuilder(self, mouse=touch_input)
actions.w3c_actions.pointer_action.move_to_location(start_x, start_y)
actions.w3c_actions.pointer_action.pointer_down()
if duration > 0:
actions.w3c_actions = ActionBuilder(self, mouse=touch_input, duration=duration)
actions.w3c_actions.pointer_action.move_to_location(end_x, end_y)
actions.w3c_actions.pointer_action.release()
actions.perform()
return cast('WebDriver', self)
def scroll(self, origin_el: WebElement, destination_el: WebElement, duration: Optional[int] = None) -> 'WebDriver':
"""Scrolls from one element to another
Args:
origin_el: the element from which to begin scrolling (center of element)
destination_el: the element to scroll to (center of element)
duration: defines speed of scroll action when moving from originalEl to destinationEl.
Default is 600 ms for W3C spec.
Usage:
driver.scroll(el1, el2)
def drag_and_drop(self, origin_el: WebElement, destination_el: WebElement) -> 'WebDriver':
"""Drag the origin element to the destination element
Args:
origin_el: the element to drag
destination_el: the element to drag to
Returns:
Union['WebDriver', 'ActionHelpers']: Self instance
"""
from appium.webdriver.common.touch_action import TouchAction
5.1 tap方法
tap()方法模拟手指对某个元素或坐标按下并快速抬起;
使用方法为:
python复制代码
def tap(
self,
element: Optional['WebElement'] = None,
x: Optional[int] = None,
y: Optional[int] = None,
count: int = 1,
) -> 'TouchAction':
"""Perform a tap action on the element
Args:
element: the element to tap
x : x coordinate to tap, relative to the top left corner of the element.
y : y coordinate. If y is used, x must also be set, and vice versa
比如:
python复制代码
TouchAction(driver).tap(user_name).perform()
5.2 press方法
press()方法是手指一直按下;
使用方法:
python复制代码
def press(
self,
el: Optional['WebElement'] = None,
x: Optional[int] = None,
y: Optional[int] = None,
pressure: Optional[float] = None,
) -> 'TouchAction':
"""Begin a chain with a press down action at a particular element or point
Args:
el: the element to press
x: x coordiate to press. If y is used, x must also be set
y: y coordiate to press. If x is used, y must also be set
比如:
python复制代码
TouchAction(driver).press(x=100, y=200).perform()
5.3 release方法
release()方法是模拟手指抬起;
使用方法:
python复制代码
def release(self) -> 'TouchAction':
"""End the action by lifting the pointer off the screen
Returns:
`TouchAction`: Self instance
"""
self._add_action('release', {})
return self
def move_to(
self, el: Optional['WebElement'] = None, x: Optional[int] = None, y: Optional[int] = None
) -> 'TouchAction':
"""Move the pointer from the previous point to the element or point specified
Args:
el: the element to be moved to
x: x coordiate to be moved to. If y is used, x must also be set
y: y coordiate to be moved to. If x is used, y must also be set
Returns:
`TouchAction`: Self instance
"""