appium基础一:连接手机和appium-desktop定位元素

appium基础一:连接手机和appium-desktop定位元素,第1张

概述一、获取手机信息adbdevices获取手机或模拟器的设备名aaptdumpbadgingxxxx.apk获取app的包名、入口等基本信息如果想要知道手机原生携带的app的基本信息,首先是无法获取到这个apk软件包,也就无法用aapt的方法来获取对应的信息。此时可以通过抓取日志的方法获取基本信息。

一、获取手机信息

adb devices获取手机或模拟器的设备名

aapt dump badging xxxx.apk获取app的包名、入口等基本信息

如果想要知道手机原生携带的app的基本信息,首先是无法获取到这个apk软件包,也就无法用aapt的方法来获取对应的信息。此时可以通过抓取日志的方法获取基本信息。

举例:想要获取到手机功能---设置  的基本信息。最终可以通过代码或appium客户端链接手机,并自动启动手机的设置功能

方法:

1、关闭手机后台运行的所有程序

2、打开手机日志

在cmd窗口输入adb logcat | findstr /i start  查看日志并过滤出来start 类型日志,保持日志监控窗口不动

3、点击手机中的---设置,查看cmd窗口日志文件

因为先前已经把所有后台运行日志关闭。所有此时打开设置,可以看到日志窗口发生了变化,可以确定这个日至就是设置功能的日志

从上面的日志信息中,可以看到有这样以穿字符串:com.androID.settings/.Settings

这个字符串中的 / 左侧即为包名,右侧是入口。然后可以把这个包名和程序入口,替换我们代码中的对应qq的包名和程序入口。替换完成以后,运行程序,就会发现设置自动被启动了

 

 

二、通过代码链接模拟器/手机

 

from appium import webdriver#导入appium包#连接手机app初始化的一些信息desc={}desc['devicename']='127.0.0.1:62001'#手机设备名称,adb devicesdesc['platformVersion']='4.4.2'#手机版本,在手机中:设置--关于手机desc['platformname']='AndroID' #手机类型,ios或androID#输入命令,获取app信息:aapt dump badging C:\Users473\Desktop\mobileqq_androID.apkdesc['appPackage']='com.tencent.mobileqq'#包名desc['appActivity']='com.tencent.mobileqq.activity.SplashActivity'#启动入口desc["unicodeKeyboard"] = "True"#appium提供的一种输入法,可以传中文。测试时直接用这个输入法desc["resetKeyboard"] = "True"#程序结束时重置原来的输入法desc["noreset"] = "True"#不初始化手机app信息(类似不清楚缓存)#启动服务端,再cmd窗口输入appium.如果appium没有安装好,可以打开appium-desktop.也相当于启动了服务driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desc)#访问服务接口,并启动手机app。url参数是当appium启动后,默认访问服务地址和接口

启动服务如下图:

 

至此,可以直接右键运行程序,可以看到模拟器中的qq就启动了

三、用客户端链接app

 

1、双击上面的图标,打开appium-desktop,点击start session

 

2、打开后,点击屏幕右上角的搜索按钮

 

 

3、然后会打开配置页面,在本地服务配置信息同上面写的代码链接配置。填入正确的信息后,点击startSession

 

 

成功启动模拟器中的qq程序。如下图。此时如果模拟器和appium-desktop中界面不同,可点击刷新按钮同步下。

四、定位方式

1、ID定位

举例:

点击定位元素按钮,点击左侧app界面中的登录定位元素后,就会出现selected element界面。

 

 此时,右侧栏中可以看到,有个ID,下拉滚动条会发现还有个resource-ID。会发现他们两个是一样的。这就是说明,这个ID是唯一的,登录按钮被唯一定位到,代码中就可以通过ID直接定位===》find_element_by_ID('com.tencent.mobileqq:ID/btn_login') #通过ID定位

 

如果右侧栏中只有resource-ID,没有ID,说明resource-ID不是唯一的,也就是不能通过ID定位方式定位元素.  

ID一定要用双引号括起来

 

2、xpath定位

用定位元素按钮定位某个元素后,右侧selected element栏目中找到xpath,复制其对应的内容。通过xpath方法就可以定位

driver.find_element_by_xpath('//androID.Widget.EditText[@content-desc="请输入QQ号码或手机或邮箱"]')

 

 

3、残障人士提示信息进行定位,也就是content-desc:

先用定位元素按钮定位某个元素后,右侧selected element栏目中,找到content-desc。复制content-desc的值后。通过find_element_by_accessibility_ID(),将对应的值作为参数传入。

driver.find_element_by_accessibility_ID('请输入QQ号码或手机或邮箱')

4、AndroIDUiautomator定位

 这个在运行时,调用的是AndroID自带的UI框架Uiautomator的API。格式固定,介绍几个常用的格式如下

driver.find_element_by_androID_uiautomator('new UiSelector().text("手机号")')# 包含text文字driver.find_element_by_androID_uiautomator('new UiSelector().textContains("机")')# 以text什么开始driver.find_element_by_androID_uiautomator('new UiSelector().textStartsWith("手")')# 正则匹配textdriver.find_element_by_androID_uiautomator('new UiSelector().textMatches("^手.*")') # classnamedriver.find_elements_by_androID_uiautomator('new UiSelector().classname("androID.Widget.TextVIEw")')# classnameMatchesdriver.find_elements_by_androID_uiautomator('new UiSelector().classnameMatches("^androID.Widget.*")') # resource-ID、resourceIDMatchesdriver.find_element_by_androID_uiautomator('new UiSelector().resourceID("com.syqy.wecash:ID/et_content")') # descriptiondriver.find_element_by_androID_uiautomator('new UiSelector().description("S 日历")')# descriptionStartsWithdriver.find_element_by_androID_uiautomator('new UiSelector().descriptionStartsWith("日历")')# descriptionMatchesdriver.find_element_by_androID_uiautomator('new UiSelector().descriptionMatches(".*历$")')

五、通过不同的定位方式查找元素 

我们也可以通过appium-desktop的search for element功能。通过定位方式和对应的值来查找元素,从而验证定位方式和值的正确性

可以看到定位方式就是我们第4借说的集中定位方式。选择一个定位方式,填入对应的值,点击search

 选中找到的元素,可以看到左侧对应手机界面中的元素被选中。从而也证明我们的这种定位方式和对应的值都是没问题的。可以定位到元素的。

如果是按钮,就点击  tap element ,相当于代码中的click()

如果是输入框,就在‘enter keys' 中输入内容,然后点击sendkeys就可以往已选的元素中输入内容,相当于代码中的send_keys()

 

六、录制

点击小眼睛图标的录制按钮,可以看到界面展现出来代码模块。可以选择录制语言=》python或其他

然后和右侧selected element 栏目中的tap、send keys、clear 或者 search for element结合 *** 作,根据search for element找到元素定位i,并tap或者sendkeys等 *** 作。这些 *** 作都会被录制下来并生成python代码。可直接使用

总结

以上是内存溢出为你收集整理的appium基础一:连接手机和appium-desktop定位元素全部内容,希望文章能够帮你解决appium基础一:连接手机和appium-desktop定位元素所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1075001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存