appium常用API

1.跳转app

场景:从一个app跳转到另一个app,比如美团支付订单

sleep(4)
driver.start_activity("包名","界面名")

包名查看

adb shell dumpsys window | grep mCurrentFocus
adb shell dumpsys window | findstr mCurrentFocus

2.获取app的包名和界面名

print(f"包名:'{driver.current_package}'")         
print(f"界面名:'{driver.current_activity}'")       

3.关闭app和驱动对象

driver.close_app()
driver.quit()     

4.app安装卸载

# 1.0 安装app
driver.install_app(r"app路径")    
# 1.1 验证已安装
if driver.is_app_installed("com.tal.kaoyan"):
    print("已经安装好了!")
else:
    print("已经卸载了!")
# 1.2 关闭当前app
sleep(2)
driver.close_app()
# 1.3 卸载app
sleep(2)
driver.remove_app("com.tal.kaoyan")
# 1.4 验证已卸载
sleep(2)
if driver.is_app_installed("com.tal.kaoyan"):
    print("已经安装好了!")
else:
    print("已经卸载了!")

5.应用放在后台

**场景:**应用放在后台,再进入前台,模拟热启动,eg:银行app从后台切到前台需要输入密码,自动化需模拟这种情况

# 表示进入后台5s,之后返回到app的最后一个页面
driver.background_app(5) 

6.文本模糊定位

该控件有文本属性,比如:命令按钮文本为"跳过"。

driver.find_element(AppiumBy.XPATH, '//*[contains(@text,"跳过")]').click()

7 锁屏图案

from appium.webdriver.common.touch_action import TouchAction
# 做图点的坐标
x1 = 116;y1 = 285
x2 = 411;y2 = y1
x3 = x2;y3 = 582
x4 = x1;y4 = y3
# 连续操作两次
for i in range(2):
    TouchAction(driver).
    press(x=x1, y=y1).wait(1000).\
    move_to(x=x2, y=y2).wait(1000).\
    move_to(x=x3, y=y3).wait(1000).\
    move_to(x=x4, y=y4).wait(1000).\
    release().perform()
    sleep(2)

8 用元素来滑动

start = driver.find_element(AppiumBy.XPATH, '//*[@text="图表浏览"]')
end = driver.find_element(AppiumBy.XPATH, '//*[@text="账本自定义"]')
# 惯性滑动
driver.scroll(start, end)

9 屏幕缩放

# 百度地图缩放

size = driver.get_window_size()
width = size['width']
height = size['height']
x1 = 0.4 * width;y1 = 0.4 * height
x2 = 0.1 * width;y2 = 0.1 * height

x3 = 0.6 * width;y3 = 0.6 * height
x4 = 0.9 * width;y4 = 0.9 * height

a1 = TouchAction(driver).press(x=x1, y=y1).wait(1000).move_to(x=x2, y=y2).release()
a2 = TouchAction(driver).press(x=x3, y=y3).wait(1000).move_to(x=x4, y=y4).release()
# 两个touchaction合在一起
m1 = MultiAction(driver)
m1.add(a1,a2)
m1.perform()
sleep(2)
class AppOperation(object):

    @staticmethod
    def swipe_way(driver_object, swipe_direction):
        def simple_swipe(x1_coe, y1_coe, x2_coe, y2_coe):
            size1 = driver_object.get_window_size()
            width1 = size1.get("width")
            height1 = size1.get("height")
            x1 = width1 * x1_coe
            y1 = height1 * y1_coe
            x2 = width1 * x2_coe
            y2 = height1 * y2_coe
            driver_object.swipe(x1, y1, x2, y2)
        if swipe_direction == "right":
            simple_swipe(0.1, 0.5, 0.9, 0.5)
        if swipe_direction == "left":
            simple_swipe(0.9, 0.5, 0.1, 0.5)
        

10.输入框

输入

element.send_keys("内容")

清空

element.clear()

默认输入中文无效,但不会报错,需添加一下参数

desired_caps["unicodeKeyboard"] = True
desired_caps["resetKeyboard"] = True

11.获取元素文本内容

element.text
# 示例应用
titles = driver.find_elements_by_id("...")
for i in titles:
    print(i.text)

12.获取元素位置和大小

element.location
element.size

13.获取元素属性值

element.get_attribute("")

14.swipe滑动

driver.swipe(start_x,end_x,duration=None)

持续时间长,惯性小

duration = ##,滑动持续的时间长度,单位:ms

15.滑动方式选择

scorll(起点元素,终点元素)无法设置持续时间,惯性大
drag_and_drop(起点元素,终点元素)无法设置持续时间,无惯性
swipe(起点坐标,终点坐标,持续时间)持续时间长,惯性小持续时间短,惯性大

16.手势操作

(1)创建TouchAction对象

(2)通过对象调用手势

(3)perform()执行

a.手指轻敲(按下并快速抬起)

TouchAction(driver).tap(element,x,y).perform()

b.按下和抬起

TouchAction(driver).press(element,x,y).perform()
TouchAction(driver).release(element,x,y).perform()
# 元素定位或坐标定位,选择一种即可,坐标写法(x=100,y=100)

c.长按

TouchAction(driver).wait(ms=0).perform()
TouchAction(driver).long_press(element,x,y,duration=1000).perform()

d.移动

TouchAction(driver).move_to(element,x,y).perform()

17.获取手机分辨率

driver.get_window_size()
# 返回{"height":800,"width":450}

18.截图

driver.get_screenshot_as_file(os.getcwd()+os.sep+"./screen.png")
import os
print(os.getcwd())
print(os.sep)
print(os.getcwd() + r"\screen.png")

19.获取和设置手机网络

driver.network_connection
driver.set_network_connection(connectionType)

			+--------------------+------+------+---------------+
            | Value (Alias)      | Data | Wifi | Airplane Mode |
            +====================+======+======+===============+
            | 0 (None)           | 0    | 0    | 0             |
            +--------------------+------+------+---------------+
            | 1 (Airplane Mode)  | 0    | 0    | 1             |
            +--------------------+------+------+---------------+
            | 2 (Wifi only)      | 0    | 1    | 0             |
            +--------------------+------+------+---------------+
            | 4 (Data only)      | 1    | 0    | 0             |
            +--------------------+------+------+---------------+
            | 6 (All network on) | 1    | 1    | 0             |
            +--------------------+------+------+---------------+

20.发送"键"到设备

driver.press_key(keycode,metastate=None)
# keycode 百度
# metastate 一般不改

21.操作通知栏

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值