zoukankan      html  css  js  c++  java
  • 2. appium入门

    appium概念

    客户端/服务器架构

    Appium的核心是暴露RESET API的网络服务器。
    它接受来自客户端的连接,监听命令并在移动设备上运行,答复表示执行结果的HTTP响应。
    客户端/服务器架构实际给了许多可能性:

    • 我们可以使用任何有http客户端API的语言编写我们的代码(选一个Appium客户端程序库用更容易)。
    • Deslred Capabillities:一些发送给Appium服务器的键值对集合(比如map或hash),告诉服务器我们想要启动什么类型的自动化会话。

    adb shell dumpsys activity|find "mFocusedActivity"
    

    可获取当前应用包名。

    appium使用步骤

    1. 打开模拟器
    2. 开启appium服务
    3. 编写Python脚本-使用appium库
    4. 运行Python脚本

    Python脚本编写

    1. 引入appium包
    from appium import webdrivr
    
    1. 提供模拟器/真机的信息,以字典数据类型存储设备信息。
    2. 连接appium:调用webdriver.Remote方法来与appium服务器进行连接,并告诉appium需要操作的设备对象
    3. 对设备进行操作:调用appium webdriver提供的各种API来对设备进行操作。

    Deslred Capabillities示例

    desired_caps = {}
    
    desired_caps["platformName"]="Android"
    desired_caps["platformVersion"]="5.1.1"
    desired_caps["deviceName"]="device"
    desired_caps["appPackage"]="com.ibox.calculators"
    desired_caps["appActivity"]="com.ibox.calculators.CalculatorActivity"
    
    

    Desired capabilities

    是一些发送给Appium服务器的键值对集合(比如map或hash),告诉服务器我们想要启动什么类型的自动化会话。
    也有各种可以在自动化运行时修改服务器的capabilities。例如,我们可以吧platformName capability设置为IOS,告诉Appium我们想要IOS会话,而不是Android或者Windows会话。我们也可以设置safariAllowPropups capability为true,确保我们在Safari自动化会话中可以使用JavaScript打开新窗口。
    Appium服务器初始化参数(Capability):
    常用参数如下:

    键名 描述
    automationName 自动化测试的引擎 Appium(默认)或者Selendroid
    platformName 使用的手机操作系统 IOS,Android,或者FirefoxOS
    platformVersion 手机操作系统的版本 例如7.1或4.4
    deviceName 使用的手机或者模拟器类型 iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4等等。。。在IOS上,使用Instruments的instruments -s devices命令可返回一个有效设备的列表。在Android上虽然这个参数目前已被忽略,但仍然需要添加上该参数
    app 本地绝对路径或远程http URL所指向的一个安装包(.ipa, .apk, 或.zip文件)。Appium将其安装到合适的设备上。请注意,如果您指定了appPackage和appActivity参数(见下文),Android Q则不需要此参数了。该参数也与browserName不兼容。 /abs/pathto/my.apk或http://myapp.com/app.ipa
    noReset 在当前session下不会重置应用的的状态。默认值为false。 true,false
    fullReset (IOS)删除所有的模拟器文件夹。 (Android)要清除app里的数据,请将应用卸载才能达到重置应用的效果。在Android Q,在session完成之后也会将应用卸载掉。默认值为false。 true,false

    Android特有的常用参数如下:
    appActivity|Activity的名字是指从你的包中要启动的Android activity。通常需要在前面加“.”(例如使用“.MainActivity代替MainActivity)|MainActivity,.Settings
    appPackage|运行的Android应用的包名|com.example.android.myapp, com.android.settings
    appWaitActivity|用于等待启动的Android Activity名称


    adb shell “dumpsys window windows | grep ‘name=.*/’” 可以获取当前屏幕运行的应用包名/Activity名。

    UiAutomator

    1. UI Automator viewer - 识别app元素
    2. Accessing device state - 访问设备状态
    3. UI Automator APIs - 接口

    使用appium定位

    使用appium定位

    1. 依次输入
      在这里插入图片描述

    2. 点击元素,右边显示元素id
      在这里插入图片描述

    __author__ = 'Hello'
    
    from appium import webdriver
    import time
    
    desired_caps = {}
    
    desired_caps["platformName"]="Android"
    desired_caps["platformVersion"]="5.1.1"
    desired_caps["deviceName"]="device"
    desired_caps["appPackage"]="com.ibox.calculators"
    desired_caps["appActivity"]="com.ibox.calculators.CalculatorActivity"
    
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
    time.sleep(8)
    
    driver.find_element_by_id("com.ibox.calculators:id/digit8").click()
    driver.find_element_by_id("com.ibox.calculators:id/plus").click()
    driver.find_element_by_id("com.ibox.calculators:id/digit6").click()
    driver.find_element_by_id("com.ibox.calculators:id/equal").click()
    

    执行结果如下:
    在这里插入图片描述

    有时我们使用UiAutomatorViewer辅助定位。

  • 相关阅读:
    m个苹果放入n个篮子
    C++ sort函数用法 C中的qsort
    C常见机试题
    二维数组作为函数参数的几种方法
    远程调用相关技术
    反射 与 序列化
    MFC 三种消息
    【2019.09.13】中秋快乐!来点福大猫咪色图ヽ(=^・ω・^=)丿
    【2019.09.11】用交互式思维导图展示学期规划(软件工程实践2019第二次作业)
    【2019.09.07】审视自我~(软件工程实践2019第一次作业)
  • 原文地址:https://www.cnblogs.com/xiaotufei/p/13338436.html
Copyright © 2011-2022 走看看