2.appium 基础

启动

Appium启动时需要指定一些通用配置,统称为Desired Capabilities,具体的一些参数可以参考Appium服务器初始化参数。这里介绍一些通用的参数与一些常见的问题。

platformName
手机操作系统

platformVersion
手机操作系统版本

deviceName
手机类型

app
待测app的路径

appActivity, appPackage
appActivity与appPackage指用于启动待测app的activityName与packageName,appium(1.6.4)已经支持activityName与packageName的自动检测,这两个参数已经可以省略了

newCommandTimeout
两条appium命令间的最长时间间隔,若超过这个时间,appium会自动结束并退出app

noReset, fullReset
noReset 不要在会话前重置应用状态。默认值false。 fullReset (Android) 通过卸载而不是清空数据来重置应用状态。在Android上, 这也会在会话结束后自动清除被测应用。默认值false。

unicodeKeyboard, resetKeyboard
在输入的时候,可能出现键盘挡住控件的情况,这时候需要使用 appium 提供的输入法(支持输入多语言,没有键盘 ui ),unicodeKeyboard 为 true 表示使用 appium-ime 输入法。 resetKeyboard 表示在测试结束后切回系统输入法。

appWaitActivity, appWaitPackage
appium需要等待的activityName与packageName,与appActivity不同的是,对于有启动动画的app来说,appWaitActivity应该是启动activity消失后出现的activity。这两个参数可以指定多个。


控件定位

android sdk的tools目录下自带一个元素查看工具uiautomatorviewer,通过这个工具可以获取到app的各个元素属性,辅助我们编写相关的脚本,uiautomatorviewer的界面如下:


常用的定位方法:
id
使用元素的resource-id属性定位,如:
driver.find_element_by_id('com.android.calculator2:id/digit1')

class
使用元素的class属性定位,如:driver.find_element_by_class_name('android.widget.Button')

xpath
定位速度很慢,不推荐。xpath的定位方式很多,这里就不一一叙述了。


基本操作

.click()
点击操作,一般用在查找元素后面,如:
driver.find_element_by_id('com.android.calculator2:id/digit1').click()

.send_keys
输入操作,一般用在查找元素后面,如:
driver.find_element_by_class_name('android.widget.EditText').send_keys("123456")

.clear()
清除文本框内的所有字段,如:
driver.find_element_by_class_name('android.widget.EditText').clear()

swipe()
滑动操作,如:
driver.swipe(900,1320,180,600,1000)
括号内的五个值分别是x坐标的起始位置、y坐标的起始位置、x坐标的目标位置、y坐标的目标位置和滑动时长(毫秒)

wait_activity()
等待activity出现时间,如:
wait_activity('.activity.HomeActivity',5)
括号内前面的是要等待的activity,后面的是超时时间,单位是秒。若超过这个时间等待的activity还没出现就跳过这个命令。


组织用例

unittest是python的一个单元测试框架,它可以帮助我们有效组织用例,把用例的不同部分区分开来。我们写一个登录的测试脚本:


使用的APP
import unittest
from time import sleep
from appium import webdriver

class Login(unittest.TestCase):

    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '6.0'
        desired_caps['deviceName'] = 'Huawei'
        desired_caps['appPackage'] = 'com.happy.food'
        desired_caps['appActivity'] = 'com.happy.food.activity.LauncherActivity'
        desired_caps["unicodeKeyboard"] = True
        desired_caps["resetKeyboard"] = True

        url = "http://127.0.0.1:4723/wd/hub"

        global driver
        driver = webdriver.Remote(url,desired_caps)
        sleep(3)

    def test_login(self):
        EditText = driver.find_elements_by_class_name("android.widget.EditText")
        #获取所有的输入框
        EditText[0].send_keys("13410066133")
        EditText[1].send_keys("1234567a")
        driver.find_element_by_id("com.happy.food:id/login").click()
        sleep(3)

    def tearDown(self):
        driver.quit()

if __name__ == '__main__':
    unittest.main()

运行脚本:

/Users/yaulola/Public/appium-Android/venv/bin/python /Users/yaulola/Desktop/appium/test.py
.
----------------------------------------------------------------------
Ran 1 test in 42.277s

OK

Process finished with exit code 0

setUp在每条用例前执行,
tearDown在每条用例后执行,
test_xxx 为要执行的用例,必须以test开头。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容