Appium定位方式代码

盘点Selenium和Appium异同点,揭秘二者内部原理! 前段时间学习了selenium的使用,今天开始接触appium看到appium的原理后产生了疑惑: 现在的selenium是通过webdriver来操作驱动浏览器的,然而appium有一个server的概念 ... 阅读详情

selenium定位和appium定位区别

Selenium定位:
1.id(html id 唯一)
2.name定位
3.class定位
4.xpath定位

Appium定位:
1.id(app项目 不唯一)定位
2.name定位不支持
3.class定位支持
4.xpath定位(不推荐),不支持绝对路径定位,支持相对路径定位
5.列表定位

注意:
1.某些元素,使用Appium无法直接识别,只能使用UiAutomatorViewer工具(Android SDK)进行识别
2.UiAutomatorViewer工具和appium inspector不能同时使用

Android8.1以后SDK tools自带的uiautomator无法直接识别机器界面信息
解决方式:
1.截取uix资源文件
adb shell uiautomator dump /sdcard/screen.uix
adb pull /sdcard/screnn.uix F:/ui/screen.uix

2.截图
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png F:/ui/screen.png

打开uiautomator导入即可
在这里插入图片描述

install_uninstall.py

# -*- codeing = utf-8 -*-
# @Time : 2022/3/25 15:14
# @Author :su
# @File : install&uninstall.py
# @Software : PyCharm


from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '127.0.0.1:62025'


#安装app
desired_caps['app'] = r'F:\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset'] = 'false'


# webdriver对象连接appium服务端
kydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)


# is_app_installed        判断app是否安装的方法
sleep(2)
if kydriver.is_app_installed("com.tal.kaoyan"):
    print("安装成功")
else:
    print("安装失败")


sleep(2)
# remove_app      卸载app的方法
kydriver.remove_app("com.tal.kaoyan")
print("自动卸载成功")
print("安装卸载一次")

cancel_skip.py

# -*- codeing = utf-8 -*-
# @Time : 2022/3/25 15:51
# @Author :su
# @File : cancel_skip.py
# @Software : PyCharm

from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '127.0.0.1:62025'


#安装app
desired_caps['app'] = r'F:\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset'] = 'false'


# webdriver对象连接appium服务端
kydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

# 需要等待时间
kydriver.implicitly_wait(3)     #隐式等待

# 取消按钮
kydriver.find_element('id','android:id/button2').click()
kydriver.find_element('id','com.tal.kaoyan:id/tv_skip').click()

脚本优化
1.脚本尽量放在函数/方法中,可反复调用
2.app项目,有些元素可能出现,可能不出现,使用try…except…else…

# -*- codeing = utf-8 -*-
# @Time : 2022/3/25 15:51
# @Author :su
# @File : cancel_skip.py
# @Software : PyCharm

from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '127.0.0.1:62025'


#安装app
desired_caps['app'] = r'F:\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
desired_caps['noReset'] = 'false'


# webdriver对象连接appium服务端
kydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

# 需要等待时间
kydriver.implicitly_wait(3)     #隐式等待


# kydriver.find_element('id','android:id/button2').click()            # 取消按钮
# kydriver.find_element('id','com.tal.kaoyan:id/tv_skip').click()     #跳过按钮
#函数1:检查是否存在取消更新按钮并点击
def check_cancelBtn():
    print("检查。。。是否有取消更新按钮")
    try:
        cancelBtn=kydriver.find_element('id','android:id/button2')
    except:
        print("取消更新按钮不存在")
    else:
        print("取消更新按钮存在")
        cancelBtn.click()

#函数2:检查是否存在跳过按钮并点击
def check_skipBtn():
    print("检查。。。是否有跳过按钮")
    try:
        skipBtn=kydriver.find_element('id','com.tal.kaoyan:id/tv_skip')
    except:
        print("跳过按钮不存在")
    else:
        print("跳过按钮存在")
        skipBtn.click()


#验证
if __name__=='__main__':
    check_cancelBtn()
    check_skipBtn()
软件测试自动化实战:Selenium与Appium 本文详细介绍了Selenium与Appium在软件测试自动化中的应用,并通过代码示例进行了深入分析。Selenium适用于Web应用的自动化测试,而Appium则专注于移动应用的测试。通过结合使用这两种工具,我们可以实现全面的自动化测试覆盖,提高测试效率和质量。希望本文的内容能够帮助您更好地理解和应用软件测试自动化工具,为您的项目开发提供有力支持。 阅读详情

相关推荐

Appium与Selenium元素定位对比:如何选择最适合你的移动端自动化测试方案

本文深入对比了Appium与Selenium在移动端自动化测试中的元素定位机制,帮助开发者根据项目需求选择最佳方案。详细分析了两者在跨平台支持、混合应用处理、性能指标等方面的差异,并提供了企业级选型指南和高级优化技巧,特别适合需要同时测试原生和Web应用的开发团队。

weixin_30897233的博客 437

appium和selenium区别

appium和selenium的区别

chengzhenabc的博客 6469

Python Appium自动化测试 元素定位(三)

Time will tell. 1、android uiautomator text 定位 如果之前有写过一些脚本,发现有时候一些元素不能够很好地定位,这时就需要采用android uiautomator去定位,它是一种非常强有力的定位方式,原理是通过 android 自带的android uiautomator的类库去查找元素。 一起看下面的图: 在上面的图片中我们不采用 appium 封装好的方法,直接使用 android 的uiautomator去定位,结果如下: user = new Uio.

kami_ochin_akane的博客 440

Selenium和appium简介

Selenium 经历了四个大版本,Selenium 1.0、Selenium 2.0、Selenium 3.0和Selenium 4.0。Selenium 不是由单独一个工具构成的,而是由一些插件和类库组成的,这些插件和类库有其各自的特点和应用场景。 Selenium 1.0 Selenium IDE 是嵌入在 Firefox 浏览器中的一个插件,可实现简单的浏览器操作的录制与回放功能。Selenium Grid 是一个自动化测试辅助工具。利用 Grid 可以很方便地实现在多台机器上或异构环境中运行测试

肥叔菌的博客 4714

大将军手把手教你玩转soloπ 之soloπ脚本自动转化为appium脚本(自动化录制APP自动化脚本)

相信通过前边的博文,大家对soloπ都有了一定的认识。 今天大将军给大家介绍下soloπ录制的脚本怎么转化为APPium脚本。 1.录制soloPi脚本 录制soloπ脚本 进入soloπ,点击录制脚本,这时候要对soloπ所需要的权限全部允许。 点击首页的录制脚本,选择要录制的APP,输入用例名称,点击开始录制。 录制结束后,点击流程-暂停/结束。(结束后脚本自动保存到设置的路径) 2.脚本分享 在设置中将用例密码修改为空 点击录制脚本-进入脚本列表-选择要转化的用例,长按-导出用例,会

dayuzhuangzhi的博客 1694

〖Python APP 自动化测试实战篇⑥〗- 实战 - appium 定位手机元素之常用的元素定位方法

对象的定位是在我们自动化测试领域非常非常关键的一步,也可以说是最关键的一步。毕竟对象都没有定位到,根本就没法操作啊。所以在这一章节中,希望大家能够多多动手去操作,不要仅仅是看。毕竟 "手是好汉,眼是懒蛋" 不是。.........

易编橙 · 终身成长社群,相遇已是上上签! 4万+

appium原理及api

appium 测试移动端UI自动化 appium 哲学 移动端自动化测试而单独开发一套api接口 appium是基于selenium做的二次扩展 android uiautomator IOS uiautomation/XCUitest android appium初始化参数: 1、appPackage 包名 2、appActivity 入口 3、deviceName 手机名...

weixin_30273175的博客 212

还在用selenium爬网页?appium带你搞定APP

前言        大家好,我是毒兽,毒辣的禽兽。        近期有人私我,对于动态网页的复杂性很是头疼。确实,随着语言种数的不断增加,网页也不再是一张简单的HTML,功能也逐步强大起来。但其实总的来说不管网页有多么复杂,它有一定的特性和规律。动态网页你要弄清楚它网页数据请求及跳转逻辑,这样我们就可以利用JS请求的API,按照一定要求发送带有参数的请求,就可以获得数据。当然,相对于前者的异步加载,更多动态网站的反爬虫措施更强,比如常见的各类验证码。这时候就需要selenium来进行模拟登录对网页操作。不过,智能手机的兴起,APP作为流行的第三方应用软件,又怎能少的了我们这些爬虫爱好者的探索

Appium的元素定位方式和定位工具

Appium的元素定位方式和工具 Appium的元素定位方式 1、ID定位 通过元素的resource-id属性来定位 find_element_by_id("resource-id的值") 2、ClassName定位 通过元素的class属性 find_element_by_class_name("class的值") 3、 Accessibilityid定位 通过元素的content-desc属性 find_element_by_accessibillty_id("content-desc 值

FFF_5的博客 1177

BUCK电路为何无法实现100%占空比?自举电路原理与替代方案解析

在开关电源设计中,DC-DC转换器是实现电压变换的核心器件,其工作原理基于功率开关管的周期性导通与关断。BUCK(降压)电路作为一种经典拓扑,通过调节开关管的占空比来控制输出电压。然而,其占空比存在理论上限,无法达到100%,这一限制源于高边开关管的驱动需求。为了驱动高边N沟道MOSFET(NMOS),需要栅极电压高于源极电压,而自举(Bootstrap)电路通过利用开关节点电压的跳变,巧妙地生成了这一高压驱动信号。自举电路必须在每个开关周期内存在续流阶段(低边管导通)为电容充电,这从根本上限制了最大占空比

weixin_32239523的博客 307

通达信源码-金牛暴起

趋势1:=3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1) AND SJTJ,DOTLINE,COLORGRAY;谷:=(((DD-LLV(DD,21))/(HHV(DD,21)-LLV(DD,21)))*(4))*(25);{0,25指高度};

qq_57222058的博客 3515

appium 定位方式总结

appium 定位方式种类: 方式 注释 AccessibilityId 在 Android 上,主要使用元素的content-desc属性,如该属性为空,不能使用此定位方式。在 iOS 上,主要使用元素的accessibility id属性进行定位,如该属性为空,如该属性为空,不能使用该属性。 Id 使用元素的Resource Id属性定位,支持:Android,仅支持 An...

天下任我行 4349

从CMT2300A实战出发:Sub1G射频匹配电路设计要点与315MHz应用详解

本文从CMT2300A芯片实战出发,详细解析Sub1G射频匹配电路设计要点,特别针对315MHz应用场景。内容涵盖频段划分逻辑、调制方式选择、晶体振荡器设计等基础认知,以及315MHz匹配电路物料选型、巴伦网络处理等实战技巧,并分享PCB布局防干扰设计和实测验证方法,助力开发者优化射频通信性能。

weixin_29238147的博客 162

【appium关键字驱动之二】appium元素封装方法

上一篇,我们通过整理测试步骤形成了excel表格,接下来,我们需要做的就是写一些公共的方法以便更好的去执行excel里面的步骤。   一、定位方式的封装 需要使用excel里面定位方式及页面元素来返回By,代码如下: /** * 把变量转化为By对象 * @param type 元素对象的定位方式 * @param value 元素对象的值 * @return By元素对象 *...

泠泠月色的专栏 1843

USB通讯速度翻倍秘诀:手把手教你用WinUsb替代HID协议(附Zadig驱动配置图解)

本文详细介绍了如何通过WinUsb技术替代传统HID协议,实现USB通讯速度的显著提升。从技术对比、实现原理到Zadig驱动配置图解,手把手教你完成免驱高速通讯方案,适用于数据采集、固件升级等场景,实测速度可达HID协议的2倍以上。

weixin_29168675的博客 132

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

Appium新版本不再支持ByName定位了怎么办

appium版本在1.5以后就不再支持ByName的定位,本文章仅介绍在appium1.6.3/1.6.4/1.6.5版本下如何支持ByName定位,适用于安卓。 在使用appium1.5之后的版本时,你一定见过这个错误 org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supporte

wuyepiaoxue789的博客 6420

【PCL 特征】积分图法线估计

本文介绍了基于积分图的有序点云法线估计方法。通过利用点云数据的行列式结构特性,该方法避免了传统KD树搜索,采用积分图将邻域统计运算复杂度从O(k²)降至O(1)。详细阐述了四种法线估计算法:协方差矩阵法(精度最高)、平均3D梯度法(实时性好)、平均深度变化法(适合SLAM)和简单3D梯度法(速度最快)。重点分析了积分图构建、动态窗口平滑处理、法线方向调整等关键技术,并提供了PCL实现代码示例。实验表明,不同方法在精度和速度上存在显著差异,可根据具体应用场景选择合适算法。

yijiujiusan的博客 275

解决appium升级后不支持使用name定位的问题

前言之前一直用的appium1.4版本,最近升级到了1.6突然发现之前的脚本好多都跑失败了,一看报错:selenium.common.exceptions.Invalid...

zouhui1003it的专栏 355

JAVA:Spring Boot3 集成 ShardingSphere 实现数据分库分表

本文介绍了基于Spring Boot和ShardingSphere-JDBC实现分库分表与读写分离的解决方案。针对高并发、大数据量场景下单库单表的性能瓶颈,通过配置ShardingSphere-JDBC实现:1)订单表按user_id和order_id分片到两个库和两张表;2)读写分离,写操作路由至主库,读操作在从库间负载均衡。方案使用Druid连接池优化,支持业务透明,无需修改SQL。

木头 660

Python爬虫-爬取猫眼演出数据

本文是该专栏的第53篇,后面会持续分享python爬虫干货知识。猫眼平台除了有影院信息之外,它还涵盖了演出信息,比如说“演唱会,音乐节,话剧音乐剧,脱口秀,音乐会,戏曲艺术,相声”等等各种演出相关信息。而本文,笔者将以猫眼平台为例,基于Python爬虫实现获取各种演出信息的数据。废话不多说,具体细节部分以及详细思路逻辑,笔者将在正文结合完整代码进行详细说明。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 568

技术分享 | app自动化测试(Android)--元素定位方式与隐式等待

一旦设置了隐式等待,则它会存在整个 WebDriver 对象实例的生命周期中,比如:每次调用 find_element 或者 find_elements 方法的时候,会自动触发隐式等待。假如设置了隐式等待时长为 10 秒,会在 10 秒之内不停的查找元素,如果第 2 秒就找到了元素,就继续执行后面的测试代码,如果超出了设置时间则抛出异常。这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!【保证100%免费】

nhb687095的博客 709

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

这些appium常用元素定位技巧,你掌握了几种?

今天跟大家分享下Appium的元素定位的一些小技巧。

. 359

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Appium——api常用函数

appium常用函数介绍: 获取页面信息: 1、 def get_current_activity(cls, driver): ''' 获取当前页面的activity :param driver: :return: ''' return driver.current_activity 2、 def get_current_pagesource(cls, driver)...

weixin_30408309的博客 440

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

基于Appium的ios自动化教程

Appium作为一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动App,它使用WebDriver协议驱动IOS,Android和Windows应用程序,本篇文章介绍实现ios自动化测试01Appium实现iOS自动化测试01启动应用填写 capability信息app 获取uuid获取点击Window---->Devices—>在右侧可查看到identifier identifier,即为我们获取到的iPhone 的uuid02元素获取通过代码开启,pycharm编写。

Testfan_zhou的博客 533

appium入坑必备--详解uiautomator2,让你摆脱usb

package手机的序列号可以通过adb devices获取到,假设序列号是emulator-5554,连接代码为此处不管是手机还是模拟器,查询到序列号填入即可定位工具====安装weditor元素定位工具 前置条件:设备需要初始化init (类似uiautomatorview,编辑器能够提供辅助编写脚本,查看组件信息,调试代码等功能。

m0_61549953的博客 1109
上一篇: appium自动化安装与卸载测试
下一篇: JMeter监听器
sugong2021
博客等级 码龄5年 45粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值