Appium元素定位与常用方法

Appium元素定位与常用方法

appium继承了selenium中的元素定位方法,并且增加了自己的一些方法,但是从继承selenium中的定位方法中,一般只会用到id、class_name、xpath这三种方法

一、常用定位方式

  • driver.find_element_by_accessibility_id() 对应content-desc(描述元素作用)
  • driver.find_element_by_id() 对应resource-id
  • driver.find_element_by_class_name() 对应class
  • driver.find_element_by_xpath() 对应xpath

二、Xpath定位

  • driver.find_element_by_xpath("//*[@text=‘注册’and @class='android.widget.TextView']")
  • driver.find_element_by_xpath("//*[@resource-id=‘com.taobao.taobao:id/tv_scan_text’]")
  • driver.find_element_by_xpath("//*[@content-desc=‘帮助’]")
  • driver.find_element(By.XPATH,"//*[@resource-id=‘com.xueqiu.android:id/name’ and @text=‘阿里巴巴’]")
  • //*[Contains(@text,“注册商品”)] 这是xpath的text模糊搜索的方法

三、By定位方式

首先要 from appium.webdriver.common.mobileby import MobileBy as By

  • self.driver.find_element(By.ID,"") 对应resource-id
  • self.driver.find_element(By.XPATH,"") 对应xpath
  • self.driver.find_element(By.ACCESSIBILITY_ID,"") 对应content-desc
  • self.driver.find_element(By.CLASS_NAME,"") 对应class

四、常用操作

  • 点击操作
self.driver.find_element_by_id("home_search").click()
  • 输入操作
self.driver.find_element_by_id("search_input_text").send_keys("阿里巴巴")
  • 获取元素属性

get_attribute(name)如获取text:get_attribute("text"), 获取content_desc:get_attribute("content_desc")

五、uiautomator定位

uiautomator是Android工作引擎,速度快,滚动查找比较方便,但表达式书写复杂,容易写错

通过uiautomator可实现:

  • resource-id 定位
  • className 定位
  • content-desc 定位
  • text 定位
  • 组合定位
  • 父子关系定位

用法:driver.find_element_by_android_uiautomator('表达式')

注:外层用单引号,内层字符串用双引号

  • 通过文本定位:new UiSelector().text(“text文本”)
  • 通过id定位:new UiSelector().resourceId("com.xueqiu.android:id/login_account")
  • 通过content-desc定位:new UiSelector().description("contenet-des属性")
  • 组合定位:new UiSelector().resourceId("com.xueqiu.android:id/login_account").text("我的")

六、webView元素的定位

webView是手机应用内嵌的浏览器,在Android 4.4 之前 webView 内核采用的是 WebKit,Android 4.4 之后才是 Chrome 作为内置浏览器,它是用来加载HTML页面控件,要定位测试应用中的webView需要前端开发打开webView的调试开关,要启用 webView 调试,在webView类上调用静态方法 setWebContentsDebuggingEnabled

if (Build.VERSION.SDK INT >= Build.VERSION CODES.KITKAT){
	if (0 != (getApplicationInfo ().flags &\
		ApplicationInfo.FLAG DEBUGGABLE))
		{ WebView.setWebContentsDebuggingEnabled(true);}
}

打开这个开关,手机端打开被测试的webView页面,然后在电脑端 chrome浏览器地址栏输入 “chrome://inspect”将显示设备上的webView列表,点击webView下方的inspect链接,就可以查看页面源代码了,实现元素定位。

在应用中需要查看打开的webView的url地址:

  • adb shell
  • logcat | grep http

当app中打开webView页面后,在测试代码中加入webview_list = driver.contexts,即可获取上下文列表(前提app包中webView调试已经打开),通过driver.switch_to.context(webview_list[-1])即切换到最新打开的webview页面,再根据webview中元素进行定位及交互

webview_list = driver.contexts # 获取上下文列表,返回一个列表,列表中 'NATIVE_APP'即为原生应用
driver.switch_to.context(webview_list[-1]) # 切换到最新打开的webview页面

页面元素的获取
方法一:

Appium-desktop 启动appium server后点击预览

方法二:

用android-sdk包中的uiautomatorviewer

方法三:

pip3 install -U weditor # uiautomator2, facebook-wda会被作为依赖一并安装上去

pip install weditor -i Simple Index

pip install weditor==0.6.4

生成启动图标:

python -m weditor —shortcut

使用weditor库实现,安装好后,在命令行输入weditor可直接运行(自动打开浏览器)

注意: wediotr的ATX服务不能与appium-server同时运行,存在冲突的情况

在执行自动化代码是,appium服务报错

在终端设备上点击 ATX 手动关闭

weditor不用的时候再打开发现,报错了:

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))

pc命令行里再执行一次:python -m uiautomator2 init,再重新更新下就可以了

随着技术的迅猛发展和AI领域的不断深入,运维运营监控领域亦出现了许多创新和变革。其中,包含50份AI大模型运维监控的合集,不仅仅为IT运维领域带来了新的挑战,更为智慧运维、统一运维以及数字化运维运营方案的提出和实施提供了丰富的实践案例和理论支持。这份合集中的内容涵盖了多种先进的运维监控方案,从基础的IT运维到更高级的智慧运维,再到统一运维数字化运维运营方案,这些方案的设计实施,都凸显了运维监控在现代企业运营中所扮演的不可或缺的角色。尤其在数字化转型的大背景下,运维监控的数字化水平直接关系到企业能否有效地利用数字技术,实现业务流程优化和创新。AI大模型作为当前技术发展的热点,其运维监控方案不仅需要适应大数据的处理需求,更要具备智能化的特点,以实现对复杂系统和模型的实时监控智能预警。这些方案往往集成了先进的数据分析技术、机器学习算法以及云计算平台,可以在保障系统稳定运行的同时,对性能瓶颈和潜在故障进行预测,从而降低运维成本,提高运维效率。在智慧运维方面,方案集中展示了如何通过智能化工具和自动化流程,将运维工作从被动的“救火”模式转变为前瞻性的“预防”模式。这不仅需要运维人员具备丰富的专业知识,更要求他们能够结合业务需求和系统特点,设计出合理的运维策略。统一运维则是另一个亮点,它强调跨平台、跨系统的运维整合能力,通过统一的运维管理平台,实现对各类资源和服务的集中管理,以及多维度的运维数据可视化,以支持更高效的决策制定和资源配置。这种方法不仅可以提升运维质量,也能大幅提高工作效率。数字化运维运营方案则侧重于将传统的运维工作数字化转型深度融合,通过运用数字技术,如云计算、大数据分析、物联网等,实现运维工作的数字化、智能化和自动化,从而构建起一个高效、智能和可持续发展的运维生态。总体而言,这份合集所包含的50份方案不仅为IT运维提供了宝贵的参考,更为推动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

St_rive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值