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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值