自动化学习day14 appium

App会话设置参数:
automationName 自动化引擎名称(Appium, Selendroid)默认使用Appium引擎
platformName 移动平台(iOS, Android, FirefoxOS)
deviceName 设备名称(Android平台随便填)
app 应用的绝对路径
browserName 移动浏览器名称,与app属性冲突
udid 真机的id

android平台特有设置
appActivity
appPackage

通过aapt命令查看apk文件获取APP的Package和Activity
aapt 所在目录sdk\build-tools\android-4.4W

查看命令
aapt  dump badging xxx.apk | findstr name=


desired_caps['platformName'] = "Android"
desired_caps['deviceName'] = 'xxx'
desired_caps['automationName'] = 'Appium'
desired_caps['platformVersion'] = '4.4.4'
#desired_caps['app'] = r"D:\tmp\apks\ApiDemos-debug.apk"
desired_caps['appPackage'] = "com.android.androidui"
desired_caps['appActivity'] = "com.android.androidui.MainActivity"

例如:

import unittest
from appium import webdriver
from time import sleep
class AndroidTests(unittest.TestCase):
    """
    App测试用例
    """


    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['deviceName'] = 'Android Emulator'
        desired_caps['appPackage'] = 'com.android.androidui'
        desired_caps['appActivity'] = 'com.android.androidui.MainActivity'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        self.driver.implicitly_wait(10)

    def tearDown(self):
        sleep(2)
        self.driver.quit()

    def test1(self):
        driver = self.driver
        el = driver.find_element_by_android_uiautomator('.resourceId("com.android.androidui:id/seekBar1")')
        # el.click()
        loc = el.location
        siz = el.size

        x= loc['x'] + 25.0*siz['width']/100
        y= loc['y'] + siz['height']/2
        driver.tap([(x,y)],duration=1000)

如果需要输入中文,还需要加入以下设置

desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True

APP启动方式 appPackage、appActivity
desired_caps[‘appPackage’]=‘包名’
desired_caps[‘appActivity’]=‘Activity名’

模拟点击:

driver.click()点击控件最中间
driver.tap([x,y],duration=0.5)  点击时间不填写默认为none,坐标需要用list表示

模拟滑动

driver.swipe(loc['x']+100, y ,x ,y, duration=1000)#前面的x,y表示起始位置,后面的x,y表示目标位置,duration=1000代表1秒
driver.flick()无法指定duration

TouchAction()

#创建touchaction对象
action = TouchAction(driver)
#点击滑动1秒 松开 执行
action.tap(x=loc['x']+100,y=y).wait(1000).move_to(x=x,y=y).release().perform()
action.tap(x=x,y=y).perform()
#滑动
action.press(x=loc['x']+100,y=y).wait(1000).move_to(x=x,y=y).release().perform()

对于app内有html页面的 定位元素是我们需要用到context
driver.context获取当前上下文
drivers.context获取所有上下文
类似于selenium里的handle

driver = self.driver
el = driver.find_element_by_android_uiautomator('.resourceId("io.selendroid.testapp:id/buttonStartWebview")')
el.click()
sleep(1)

print driver.context
print driver.contexts
driver.switch_to.context(driver.contexts[1])

其他

driver.install_app()路径
driver.remove_app()package
driver.launch_app()启动
driver.close_app()关闭
driver.reset()
hide_keyboard()隐藏键盘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值