Appium自动化

选择界面元素
操作元素
点击
输入字符
拖拽
获取页面元素的各种属性
根据Appium获取的数据进行分析和处理

代码回顾:

from appium import webdriver   #webdriver是基于selenium扩展的一个对象
import time,traceback

desired_caps = {}   #存储一些配置信息,通过字典键值对来存。吧配置信息传递给appium server
desired_caps['platformName'] = 'Android'      #指定自动化的设备
desired_caps['platformVersion'] = '8.0'    #设备的操作系统版本
desired_caps['deviceName'] = 'test'    #对安卓没啥用,但是不能不写
# desired_caps['app'] = r'e:\apk\toutiao.apk'       #app安装包的路径,如果手机没装的话,会帮你装上。如果装好,可以注释
desired_caps['appPackage'] = 'io.manong.developerdaily'     #应用的包名
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'   #告诉appium启动的Activity的名字,安卓应用是由多个Activity组成的
desired_caps['unicodeKeyboard']  = True    #输入中文的话,这个就要打开。给appium自动化用的。输入非ask码用的
desired_caps['resetKeyboard']  = True   #配合上面一起用的,据说可以还原之前的输入法
desired_caps['noReset'] = True          #非常重要。如果不设置的话。每次运行都会清空里面的数据。
desired_caps['newCommandTimeout'] = 6000     #主要是与服务端appiumserver连接的时间,防止断开。6000s
#启动Remote RPC
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)       #
try:
    driver.implicitly_wait(10)

    # 根据id找到元素,并点击,id和 html 元素的id不同
    driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
    time.sleep(1)
    driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
    time.sleep(1)

    # 输入用户名、密码
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
    ele.send_keys('jcyrss@163.com')
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
    ele.send_keys('sdfsdf')

    time.sleep(2)
    # 点击登录
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())


input('**** Press to quit..')
driver.quit()

如何获取包名appPackage,和启动页appActivity:

用sdk\build-tools\28.0.2\aapt.exe工具;见下面:
先进到app所在的目录,打开命令行(shift+右击)
D:\>E:\androidsdk\build-tools\28.0.2\aapt.exe dump badging jisuanqi.apk(见图)

session #会话,就是一次交流

Appium测试程序和Appium server之间的http请求必须要在一个session中进行
session ID

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

tap方法

click类似,都是点击界面
区别是,tap是针对坐标
难以用通常的方法定位元素的时候使用。不同的手机,不同的分辨率。坐标不一样。不建议使用
ADB命令:(Android Debug Bridge)
与模拟器或链接的Android设备进行通信
命令参考:
https://developer.android.google.cn/studio/command-line/adb
adb install path_to_apk #安装app文件
adb shell #进入手机目录

UIAutomator API

UIAutomator API测试框架提供了一组API来构建UI测试

范例:

根据class name和text属性

code = 'new UiSelector().text("我的").className("android.widget.TextView")'
ele = driver.find_element_by_android_uiautomator(code)

根据resource id属性

'new Uiselector().resoureceId("io.manong.developerdaily:id/theid")'

操作界面:

滑动

Appium WebDriver的swipe方法(坐标和duration)

直接查看,估算操作坐标
先获取,再分析操作坐标(更健壮)
location = ele.location     #左上角坐标(dict:有 X,Y)
size = ele.size    #宽,高(dict:有 width,height)
知道上面两个数据,就知道所有

操作不可见元素

先滑动到其可见
在操作该元素
获取全屏幕尺寸
    screenSize = driver.get_window_size
    screenW = screenSize["width"]
    screenH = screenSize["height"]

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

更多推荐