zoukankan      html  css  js  c++  java
  • appium 基础二:常用api接口

    一、获取手机分辨率

    size=driver.get_window_size()#获取手机屏幕大小,分辨率
    print(size)#{'width': 720, 'height': 1280}

    得到的是一个字典,从而获取到手机的宽和高

    height=size.get('height')
    width=size.get('width')

    二、滑屏和拖拽

    通过坐标实现划屏操作。那么首先我们要设置起始坐标的x,y和终点坐标的x,y。然后通过swipe方法实现划屏

    s_x=width*0.5#0.5相当于宽度的一半,此处采用了百分比的方式
    s_y=height*0.8
    
    e_x=width*0.5
    e_y=height*0.2
    driver.swipe(s_x,s_y,e_x,e_y,500)#滑动

    拖拽

    # 拖拽
    # elementObj1源元素,elementObj2目标元素
    # 通过long_press实现
    driver.drag_and_drop(elementObj1, elementObj2)

    触控

    # 多点触控 模拟手指点击
    # tap模拟按住坐标多少秒,[(x,y)] 多个坐标则写多个元祖。参数2为按住多少秒。ms(毫秒)为单位
    driver.tap([(x, y)], 5000)

    三、操作app

    # 返回是否安装了对应包名的App True 或者 False
    driver.is_app_installed('com.syqy.wecash')
     
    # 关闭初始化信息中的App
    driver.close_app()
     
    # 启动初始化信息中的App
    driver.launch_app()
     
    # 安装app 参数为软件的绝对路径
    driver.install_app(r'C:UsersjhouyafanDesktop	esterappUiwecash.apk')
     
    # 卸载app 参数接收appPackageName
    driver.remove_app('com.syqy.wecash')

    driver.hide_keyboard()#收起键盘
    driver.background_app(5)#应用置于后台2s
    driver.shake()#摇晃(Shake) 模拟设备摇晃 

    start_activity:

    1、启动app

    我们在运行程序时,默认有配置app信息,在程序运行时,默认启动已配置好的app。那么此时如果我们想要开启其他的app,就可以用这个方法

    #配置的手机信息中,启动的是qq,这里close_app后,关闭app,然后再start_activity启动别的app=>设置
    driver.close_app()
    driver.start_activity('com.android.settings','.Settings')

    2、通过页面入口,直接打开页面,略过前面的步骤

    比如qq,默认是启动页面--登录/注册---登录页或者注册页。我们可以用这个方法,使得不用经过登录/注册页,直接启动注册页。

    步骤:

    1、先进入到登录/注册页面,点击注册进入注册页面后

    2、获取当前页面的activity

    driver.current_activity  这个就是注册页面的入口

    3、用start_activity方法,直接启动该页

    driver.start_activity('com.tencent.mobileqq','.activity.RegisterPhoneNumActivity')#包名,指定页面的入口

    四、清缓存

    driver.reset()#清缓存

    相当于手机配置信息中的

    desc["noReset"] = "False"#表示需要初始化手机信息

    desc["noReset"] = "True"#不初始化手机app信息(类似不清楚缓存)

    五、NATIVE_APP 与 WEBVIEW 上下文操作

    手机app有原生app和混合app两种。混合App就是HTML5 App,混合App通常由两部分组成,HTML5云网站+App应用客户端

    如果手机app中嵌套了h5页面,我们就不能够直接操作h5,需要先进行切换。见到标签中显示webview,就说明时h5页

    # 返回当前session中的app类型
    driver.current_context
     
    
    # 获取app所有的类型
    # 有WEBVIEW的则以list的形式展示两个
    res=driver.contexts
     
    # app类型切换 参数接收app类型
    # appium对selenium的switch_to的扩展
    # 增加了MobileSwitchTo,继承了selenium的switch_to
    driver.switch_to.context(res[1])

    默认进入app,指针在原生app NATIVE_APP上。如果此时想要进入webview中操作元素,就要先进性切换

    #比如我们模拟器中的浏览器,进入后,输入某个网址打开网页。此时当前页面就既有原生,也有h5.网页的地址栏时原生的。网页的正文肯定时h5的
    
    print(driver.contexts)#返回当前手机app类型,应该会有2个,一个原生的,一个webview的:  ['NATIVE_APP', 'WEBVIEW_com.android.browser']
    
    driver.switch_to.context(driver.contexts[1])#从原生切换到webview

    六、键盘keycode

    # 隐藏键盘
    driver.hide_keyboard()
     
    # 发送按键码,仅按一下,与press_keycode相同
    # 可接收str或int的code码
    driver.keyevent(3)
     
    # 发送按键码,仅按一下,可接收str或int的code码
    driver.press_keycode(24)
     
    # 发送一个长按的按键码,接收参数必须是int的code码
    driver.long_press_keycode(25)

    键盘对应的keycode可百度查询。比如enter回车键对应的码就是66.如果想要操作回车,可直接写driver.press_keycode(66)就代表按下了回车

    CODE_ENTER 回车键 66
    KEYCODE_ESCAPE ESC键 111
    KEYCODE_DPAD_CENTER 导航键 确定键 23
    KEYCODE_DPAD_UP 导航键 向上 19
    KEYCODE_DPAD_DOWN 导航键 向下 20
    KEYCODE_DPAD_LEFT 导航键 向左 21
    KEYCODE_DPAD_RIGHT 导航键 向右 22
    KEYCODE_MOVE_HOME 光标移动到开始键 122
    KEYCODE_MOVE_END 光标移动到末尾键 123
    KEYCODE_PAGE_UP 向上翻页键 92
    KEYCODE_PAGE_DOWN 向下翻页键 93
    KEYCODE_DEL 退格键 67
    KEYCODE_FORWARD_DEL 删除键 112
    KEYCODE_INSERT 插入键 124
    KEYCODE_TAB Tab键 61
    KEYCODE_NUM_LOCK 小键盘锁 143
    KEYCODE_CAPS_LOCK 大写锁定键 115
    KEYCODE_BREAK Break/Pause键 121
    KEYCODE_SCROLL_LOCK 滚动锁定键 116
    KEYCODE_ZOOM_IN 放大键 168
    KEYCODE_ZOOM_OUT 缩小键 169
    KEYCODE_0 按键'0' 7
    KEYCODE_1 按键'1' 8
    KEYCODE_2 按键'2' 9
    KEYCODE_3 按键'3' 10
    KEYCODE_4 按键'4' 11
    KEYCODE_5 按键'5' 12
    KEYCODE_6 按键'6' 13
    KEYCODE_7 按键'7' 14
    KEYCODE_8 按键'8' 15
    KEYCODE_9 按键'9' 16
    KEYCODE_A 按键'A' 29
    KEYCODE_B 按键'B' 30
    KEYCODE_C 按键'C' 31
    KEYCODE_D 按键'D' 32
    KEYCODE_E 按键'E' 33
    KEYCODE_F 按键'F' 34
    KEYCODE_G 按键'G' 35
    KEYCODE_H 按键'H' 36
    KEYCODE_I 按键'I' 37
    KEYCODE_J 按键'J' 38
    KEYCODE_K 按键'K' 39
    KEYCODE_L 按键'L' 40
    KEYCODE_M 按键'M' 41
    KEYCODE_N 按键'N' 42
    KEYCODE_O 按键'O' 43
    KEYCODE_P 按键'P' 44
    KEYCODE_Q 按键'Q' 45
    KEYCODE_R 按键'R' 46
    KEYCODE_S 按键'S' 47
    KEYCODE_T 按键'T' 48
    KEYCODE_U 按键'U' 49
    KEYCODE_V 按键'V' 50
    KEYCODE_W 按键'W' 51
    KEYCODE_X 按键'X' 52
    KEYCODE_Y 按键'Y' 53
    KEYCODE_Z 按键'Z' 54

    七、错误及解决办法

    1、目标及计算机拒绝

    服务没有启动,需要启动服务:在cmd窗口输入appium 或者直接打开appium-desktop

    2、send_keys方法错误

    这个是send_keys方法不可用,解决办法:直接用另一个办法就行set_vallue()

    3、appium与chromedriver版本不匹配

    appium版本过高,降低版本即可

    步骤:

    1、先卸载当前版本:npm uninstall appium -g

    2、安装制定低版本

    npm -g install appium@1.7.0  这个命令需要翻墙,如果不能行的话,可以用国内镜像,或者cnpm安装

    cnpm install -g appium@1.7.0 --no-cache


     

      

  • 相关阅读:
    查询多列数据时用这种方法查询
    当只需要查找一列数据的时候 用这种方法减少数据库的访问
    将从数据表中获得的枚举变量名称或者是控件名变成要使用的枚举变量
    枚举变量用法
    查询数据表行数 然后循环查找表 添加数据到ITEMS
    tbType和TypeList操作
    c#中动态创建textbox并且从数据库中获取表中数据添加到textbox中
    OpenCV
    lambda表达式
    技术术语
  • 原文地址:https://www.cnblogs.com/bendouyao/p/9350380.html
Copyright © 2011-2022 走看看