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()。

相关内容

热门资讯

股价波动较大!易点天下:15日... 【大河财立方消息】1月14日,易点天下网络科技股份有限公司(简称易点天下)公告称,公司股价波动较大,...
币圈院士:1.15比特币过关斩... 交易的根本是生存,其次才是收益,所以每次操作之前先想清楚自己的操作是否合理,本金是否安全,要形成一套...
专家解读 | 数据应用场景激活... 文 | 北京软件和信息服务业协会 国家数据局会同有关部门研究编制了《工业制造、现代农业等九个领域“数...
2026年十大危机公关公司榜单... 凌晨三点,某上市公司公关总监的手机被一条视频推送点亮。短短15秒的剪辑,将产品质量问题放大成了企业道...
原创 寒... 2025年寒冬的乌克兰,并非末日电影中的场景,而是残酷的现实。当零下十五度的凛冽寒流裹挟着鹅毛大雪,...
白银站稳90美元关口,白银矿业... 来源:环球市场播报 核心要点 现货白银价格于周二首次突破每盎司 90 美元,并在周三交易时段延续...
AI应用端全面爆发!4大黄金赛... 2026年1月14日周三的A股市场,AI应用端彻底点燃全场!浩瀚深度、壹网壹创等多只个股20CM涨停...
FXGT:平台监管合规与全球市... 本文探讨FXGT平台的核心优势,重点分析其监管合规性和全球市场连接的整合价值。通过严格的合规框架,F...
原创 1... 写在文章前的声明:在本文之前的说明:本文中所列的投资信息,只是一个对基金资产净值进行排行的客观描述,...
原创 美... 2026 年 1 月 13 日,美国多家媒体集中披露两条重磅消息,中国美债持仓降至 6887 亿美元...
融资保证金比例重回100%:A... "两融余额突破2.67万亿!"当这个数字刷屏各大财经媒体时,监管层的一纸通知瞬间引爆市场——融资保证...
靠中式精酿9个月狂卖11亿,河... 不到两年时间,一群“微醺女孩”把一家成立44年的河南地方啤酒厂推到IPO门口。 1月13日,河南金星...
原创 黄... 哈喽大家好,今天小无带大家聊聊最近刷屏的抢金热潮!金饰价格飙涨不停,一条项链一夜涨1.5万还被疯抢,...
原创 虚... 小睿就来深扒“纸上黄金”的IPO迷局,Suplay冲刺港股欲成“收藏卡第一股”,靠米哈游IP赚足利润...
北京CBD千亿规模国际级商圈初... 央广网北京1月14日消息(记者 王进文)1月14日,记者从北京市朝阳区两会新闻发布会上了解到,北京商...
原创 9... 什么样的酒能赢得市场? 2026年开年,A股市场的“分裂感”格外清晰。一边,是上证指数稳步站上410...
北方稀土设备供应商,广泰真空上... 来源丨时代商业研究院 作者丨陆烁宜 编辑丨郑琳 时隔3个月,“超长验收”项目披露的数量却翻倍,沈阳广...
热点城市启动新年“第一拍” 民... 来源:21世纪经济报道 21世纪经济报道记者 张敏 1月14日,青岛2026年首场宅地拍卖落锤。在市...
啤酒卖不动了,中式精酿能救金星... 在中国啤酒行业,已经很久没有出现真正意义上的 " 新故事 " 了。 过去十余年,这个一度被视为现金牛...
小组第二出线!U23亚洲杯-李... 北京时间1月14日消息,2026年U23亚洲杯小组赛继续进行,在D组最后一轮争夺中,中国U23男足迎...