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辅助定位。

posted @ 2020-03-25 11:43  土匪哥的歌儿  阅读(71)  评论(0编辑  收藏  举报