Python移动端自动化
admin
2024-01-20 07:16:22
0

Appium是一个跨平台移动端自动化测试工具,可以为IOS和Android平台创建自动化测试用例。可以模拟App内部的各种操作,如点击、滑动、文本输入等。只要我们手工操作的动作Appium都可以完成。

一、自动化环境搭建

Java JDK
Android SDK
Appium
Python

二、启动

Appium启动App的方式有两种:一种是用Appium内置的驱动器来打开App,另一种是利用Python程序实现此操作。

三、API

1、初始化

from appium import webdriverserver = 'http://localhost:4723/wd/hub'
desired_caps = {'platformName': 'Android', # 被测手机是安卓'platformVersion': '8', # 手机安卓版本'deviceName': 'xxx', # 设备名,安卓手机可以随意填写'appPackage': 'tv.danmaku.bili', # 启动APP Package名称'appActivity': '.ui.splash.SplashActivity', # 启动Activity名称'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True'resetKeyboard': True, # 执行完程序恢复原来输入法'noReset': True,       # 不要重置App'newCommandTimeout': 6000,'automationName' : 'UiAutomator2'
}
driver = webdriver.Remote(server, desired_caps)

2、查找元素

from selenium.webdriver.common.by import By

可以通过 Selenium 中通用的查找方法来实现元素的查找

el = driver.find_element_by_id('')
els = driver.find_element(By.ID,'')

在Android平台上,可以使用UIAutomator来进行元素选择

el = driver.find_elements_by_android_uiautomator('new UiSelector().description('Animation')')

在IOS平台上,可以使用UIAutomator来进行元素选择

el = driver.find_elements_by_ios_uiautomator('.elements()[0]')

使用IOS Predicates来进行元素选择

el = driver.find_element_by_ios_predicate('wdName == "Buttons"')

使用IOS Class Chain来进行选择

el = driver.find_element_by_ios_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')

3、点击
tap(self,positions,duration=None) 该方法模拟手指点击(最多五指)

driver.tap([(100, 20), (100, 60), (100, 100)], 500)

click()

find_element_by_id('com.tencent.mm:id/btn').click()

4、屏幕拖动
scroll(self,original_el,destination_el) 方法模拟屏幕滚动
original_el:被操作元素
destination_el:目标元素

swipe(self,start_x,start_y,end_x,end_y,duration=None) 方法模拟屏幕滑动

flick(self, start_x, start_y, end_x, end_y) 方法模拟从A点快速滑动到B点

5、拖拽
drag_and_drop(self,original_le,destination_el) 将某个元素拖动到另一个目标元素上

6、文本输入
set_text() 方法实现文本输入

7、动作链
与Selenium中的ActionChains类似,Appium中的TouchAction可支持的方法有tap()、press()、long_press()、release()、move_to()、wait()、cancel()等

如果想要实现拖动操作,可以用如下方式:

els = self.driver.find_elements_by_class_name('listView')
a1 = TouchAction()
a1.press(els[0]).move_to(x=10, y=0).move_to(x=10, y=-75).move_to(x=10, y=-600).release()
a2 = TouchAction()
a2.press(els[1]).move_to(x=10, y=10).move_to(x=10, y=-300).move_to(x=10, y=-600).release()。

相关内容

热门资讯

ST中装:公司主要银行账户已全... 证券之星消息,ST中装(002822)06月24日在投资者关系平台上答复投资者关心的问题。 投资者提...
2026年开窗机行业趋势与战略... 一、开篇引言:市场格局重塑下的选择逻辑 步入2026年,全球建筑智能化与绿色节能政策的叠加驱动,使开...
资金全面转向科技,传统消费企业... 近期 A 股出现明显风格切换,老牌消费资金持续流出,机构与传统上市公司纷纷加码半导体、算力赛道。 先...
合肥保利翡翠天奕具体交房时间是... 对于众多购房者而言,“合肥保利翡翠天奕具体交房时间是什么时候?能按时交房吗?”是心中最关切的问题。根...
港股风向标|恒指连续杀跌后企稳... 财联社6月24日讯(编辑 冯轶)今日港股短线企稳,三大指数集体收涨。截至收盘,恒生指数涨0.33%,...
瑞众人寿达州中支被罚17万,涉... 蓝鲸新闻6月24日讯,近日,国家金融监督管理总局达州监管分局发布行政处罚决定书,剑指瑞众人寿保险有限...
美国最担心的事还是来了,中国加... 最近这段时间,国际金融圈子里有一笔账,算得各家央行心里都不太踏实。 截至2026年春季,美国国债总规...
马斯克,不是万亿富豪了 资产历史性超过万亿美元不到两周,特斯拉、SpaceX掌门人埃隆·马斯克的身价近日快速下跌。 据中新经...
突发!金价跌破4000美元,近... 每经记者:杜宇 记者|杜宇 编辑|何小桃 杜恒峰 校对|金冥羽 金银价格大跳水。 6月24日晚,现货...
粗粮吃越多越好?很多糖友吃错升... 控糖圈一直流传多吃粗粮稳血糖,不少糖友直接三餐全吃粗粮、顿顿杂粮,不仅胃胀消化不良,餐后血糖反而不降...
持续大跌!刚刚,黄金跌破400... 潮新闻客户端 记者 吴恩慧 6月24日,贵金属再次大跌。 截至发稿时,现货黄金大跌近3%,跌破400...
2026年安徽白酒代加工/贴牌... 一、行业背景与痛点引入 白酒代加工领域正经历结构性变革。据行业观察,2025年至2026年,中小酒企...
曾在次贷危机中取得900%收益... 来源:环球市场播报 对冲基金经理Lee Robinson在全球金融危机期间曾凭借及时做空美国次级抵押...
基金“业界良心”又吹哨?杨东旗... 图片来源:图虫创意 “A股大量的热门股票,未来极有可能跌掉八成乃至九成以上,我们不敢再参与了。”6月...
浙江稠州商业银行护航“两司两员... 近年来,随着平台经济、共享经济蓬勃兴起,货车司机、网约车司机、快递员、外卖配送员(以下简称:两司两员...
IPO研究 | 中国日均Tok... 瑞财经 王敏 6月22日,河南鑫宇光科技股份有限公司(以下简称“鑫宇科技”)北交所IPO获受理,保荐...
IPO定向松绑,难道硬科技无动... 睡前和大家唠两句,最近市场藏着不少容易被忽略的动向,值得好好捋捋。本篇为大家准备了4条要闻,都是实打...
Kalshi首席执行官称预测交... 来源:环球市场播报 核心要点 Kalshi首席执行官塔雷克・曼苏尔在消费者新闻与商业频道《财经早...
韩国科技股暴跌点燃全球抛售潮 在全世界范围内, AI资本神话遭遇微观与宏观的双重审视 文|《财经》特约撰稿人 金焱 发自华盛顿 编...
审计署通报!中国银行逃税23.... 6月23日,审计署发布《国务院关于2025年度中央预算执行和其他财政收支的审计工作报告》,在报告中的...