一、Appium入门案例

  1. demo

    from appium import webdriver
    from time import sleep # server 启用参数
    desired_caps = {} # 设备信息
    desired_caps['platformName'] = 'Android' # 设备名称
    desired_caps['platformVersion'] = '7.1.2' # 设备版本
    desired_caps['deviceName'] = '127.0.0.1:62001' # 设备号 # app信息
    desired_caps['appPackage'] = 'com.android.settings' # 应用包名
    desired_caps['appActivity'] = '.Settings' # 启动的activity desired_caps["automationName"] = 'UiAutomator1' # 解决新版appium报错 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    sleep(3)
    # 关闭app driver对象不会关闭
    driver.close_app() sleep(3)
    # 关闭驱动对象
    driver.quit()
    1. 常用参数
    platformName 平台的名称:iOS, Android, or FirefoxOS
    platformVersion 设备系统版本号
    deviceName 设备号 IOS:instruments -s devices,Android: adb devices
    app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
    appActivity 启动的Activity
    appPackage 启动的包
    unicodeKeyboard unicode设置(允许中文输入)
    resetKeyboard 键盘设置(允许中文输入)

二、App操作API

  1. 安装apk到手机中

    import os
    
    from appium import webdriver
    from time import sleep # server 启用参数
    desired = {
    # 设备信息
    'platformName': 'Android', # 设备名称
    'platformVersion': '7.1.2', # 设备版本
    'deviceName': '127.0.0.1:62001', # 设备号
    # app信息
    'appPackage': 'com.android.settings', # 应用包名
    'appActivity': '.Settings', # 启动的activity
    # 解决新版appium报错
    'automationName': 'UiAutomator1'
    } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired)
    sleep(3)
    # 下载apk
    driver.install_app(os.getcwd() + os.sep + "jisuanqi.apk")
    sleep(3)
    # 关闭app driver对象不会关闭
    driver.close_app() sleep(3)
    # 关闭驱动对象
    driver.quit()
    • 说明:

      driver.install_app(app_path)

      参数:app_path:APK文件所在路径

    1. 从手机中卸载apk
    import os
    
    from appium import webdriver
    from time import sleep # server 启用参数
    desired = {
    # 设备信息
    'platformName': 'Android', # 设备名称
    'platformVersion': '7.1.2', # 设备版本
    'deviceName': '127.0.0.1:62001', # 设备号
    # app信息
    'appPackage': 'com.youba.calculate', # 应用包名
    'appActivity': '.MainActivity', # 启动的activity
    # 解决新版appium报错
    'automationName': 'UiAutomator1'
    } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired)
    sleep(3)
    # 卸载apk
    driver.remove_app("com.youba.calculate")
    sleep(3)
    # 关闭app driver对象不会关闭
    driver.close_app()
    # 关闭驱动对象
    driver.quit()
    • 说明:

      driver.remove_app(app_id)

      参数:app_id:需要卸载的app包名

    1. 判断APP是否有安装
    import os
    
    from appium import webdriver
    from time import sleep # server 启用参数
    desired = {
    # 设备信息
    'platformName': 'Android', # 设备名称
    'platformVersion': '7.1.2', # 设备版本
    'deviceName': '127.0.0.1:62001', # 设备号
    # app信息
    'appPackage': 'com.android.settings', # 应用包名
    'appActivity': '.Settings', # 启动的activity
    # 解决新版appium报错
    'automationName': 'UiAutomator1'
    } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired)
    sleep(3)
    result = driver.is_app_installed("com.youba.calculate")
    print(result)
    # 判断是否有com.youba.calculate该apk,有就删除 True,没有就下载 False
    if result:
    driver.remove_app("com.youba.calculate")
    else:
    driver.install_app(os.getcwd() + os.sep + "jisuanqi.apk")
    sleep(3)
    # 关闭app driver对象不会关闭
    driver.close_app()
    # 关闭驱动对象
    driver.quit()
    • 说明:

      driver.is_app_installed(bundle_id)

      参数:bundle_id: 可以传入app包名,返回结果为True(已安装) / False(未安装)

APP测试(appium+Python基础操作)一的更多相关文章

  1. python基础操作以及hdfs操作

    目录 前言 基础操作 hdfs操作 总结 一.前言        作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...

  2. app自动化测试Appium+python

    一.node.js安装 https://nodejs.org/en/download/ ##一直下一步 ###cmd查看 二.  .NET Framework安装 https://www.micros ...

  3. Python菜鸟之路:Python基础-操作缓存memcache、redis

    一.搭建memcached和redis 略,自己去百度吧 二.操作Mmecached 1. 安装API python -m pip install python-memcached 2. 启动memc ...

  4. python学习之路-1 python基础操作

    本篇所涉及的内容 变量 常量 字符编码 用户交互input 格式化字符串 python的缩进规则 注释 初始模块 条件判断 循环 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中 ...

  5. Python基础操作-集合

    在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...

  6. python基础操作以及变量运用

    今天学习关于pycharm的操作以及变量的知识 1.关于pycharm的基本操作,作为一个小白,仪式感还是要有 在基础界面上新建然后打印hello world,也是对python的一种尊重吧 2.关于 ...

  7. python基础操作

    1.打印操作 print('2222') 2.接收用户输入 name=input('name') 3.if else判断 name='qiao'name2='师弟'username=input('输入 ...

  8. python 基础操作--数据类型

    一.变量 1.定义:将运算的中间结果暂存到内存,以便后续程序调用. 2.命名规则 1.变量由字母.数字.下划线搭配组合而成: 2.不可以用数字开头,也不能全都是数字: 3.不能是python 关键字, ...

  9. Appium + python - TouchAction操作

    from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom appium. ...

随机推荐

  1. HUAWEI防火墙双出口根据链路优先级主备备份

    组网图形 组网需求 通过配置根据链路优先级主备备份,FW可以在主接口链路故障时,使用备份接口链路转发流量,提高传输的可靠性. 如图1所示,企业从ISP1租用2条链路,带宽均为50M,从ISP2租用1条 ...

  2. Day11_55_在Map集合中使用泛型

    在Map集合中使用泛型 ``` import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ja ...

  3. 面试有关TCP常问的几个问题

    在面试中网络问题是一定会考察的,而TCP协议则是考察网络知识的重点.经常会被问道的问题如下: 请讲一下TCP协议建立连接的过程 请介绍TCP协议中的三次握手和四次挥手是怎么样的 为什么TCP协议要三次 ...

  4. MySQL数据库干货分享!mysql每月自动创建表结构

    如果你刚好在学MySQL,博主推荐一套很详细的MySQL教程 主要详细讲解了MySQL的相关知识,包括MySQL概述,MySQL应用环境,MySQL系统特性,MySQL初学基础,MySQL管理工具,如 ...

  5. 带你温习一下webpack配置

    前言 你知道node.webpack和npm之间的关系吗? 首先来介绍一下node.webpack和npm的有什么样的关系. 我们知道webpack是对我们所开发的html.css.js等模块化开发的 ...

  6. hdu3006 状态压缩+位运算+hash(小想法题)

    题意:        给了n个集合,问你这n个集合可以组合出多少种集合,可以自己,也可以两个,也可以三个....也可以n个集合组在一起. 思路:       是个小想法题目,要用到二进制压缩,位运算, ...

  7. 逆向 time.h 函数库 time、gmtime 函数

    0x01 time 函数 函数原型:time_t time(time_t *t) 函数功能:返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位.如果 se ...

  8. Windows PE导出表编程4(重构导出表实现私有函数导出)

    本次是尝试调用DLL里面的私有函数. 一: 之前先探索一下,首先可以考虑用偏移量来调用,就是如果知道了某个私有函数和某个导出的公共函数的相对便宜的话,直接加载dll获取公共函数地址,然后自己手动去偏移 ...

  9. 脱离xml使用JavaConfig实现Spring配置

    总结 情况一: 配置类中类名添加 @Configuration 注解,同时提供一个方法返回一个Bean实例,且这个方法添加注解 @Bean ,就可以由Spring管理此对象 如下所示: User.ja ...

  10. VS里的 代码片段(Code snippet)很有用,制作也很简单

    工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新 ...