Appium-desktop元素定位
一、打开 appium-desktop ,点击 start session

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

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

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

四、定位方式
1、id定位,如下
点击定位元素按钮,点击左侧app界面中的我的定位元素后,就会出现selected element界面。

此时,右侧栏中可以看到,有个id,下拉滚动条会发现还有个resource-id。会发现他们两个是一样的。这就是说明,这个id是唯一的,登录按钮被唯一定位到,代码中就可以通过id直接定位。
dr.find_element_by_id('com.yw.yzz:id/seting_tab').click()
2、xpath定位

- 用定位元素按钮定位某个元素后,右侧selected element栏目中找到xpath,复制其对应的内容。通过xpath方法就可以定位
dr.find_element_by_xpath('/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout[4]/android.widget.RadioButton').click()
- 还或者如下通其他属性进行编写
dr.find_element_by_xpath('//android.widget.RadioButton[@id="com.yw.yzz:id/seting_tab"]').click()
3、提示信息进行定位,也就是 content-desc:
先用定位元素按钮定位某个元素后,右侧 selected element 栏目中,找到 content-desc,复制 content-desc 的值后。通过 find_element_by_accessibility_id(),将对应的值作为参数传入。

dr.find_element_by_accessibility_id('content-desc').send_keys("1777982xxxx")
4、AndroidUiautomator定位
这个在运行时,调用的是Android自带的UI框架UiAutomator的Api。格式固定,介绍几个常用的格式如下:

#text内容
dr.find_element_by_android_uiautomator('new UiSelector().text("QQ号/手机号/邮箱")').send_keys("1777982xxxx")
# 包含text文字
dr.find_element_by_android_uiautomator('new UiSelector().textContains("手机号")').send_keys("1777982xxxx")
# 以text什么开始
dr.find_element_by_android_uiautomator('new UiSelector().textStartsWith("QQ号")').send_keys("1777982xxxx")
# 正则匹配text
dr.find_element_by_android_uiautomator('new UiSelector().textMatches("^QQ号/手机号.*")').send_keys("1777982xxxx")
dr.find_element_by_android_uiautomator('new UiSelector().textMatches(".*手机号.*")').send_keys("1777982xxxx")

# resource-id、resourceIdMatches
dr.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tencent.mobileqq:id/login")').click()

# description(Content-desc的属性的值为desc)
dr.find_element_by_android_uiautomator('new UiSelector().description("请输入QQ号码或手机或邮箱")').send_keys("1777982xxxx")
# descriptionStartsWith(以content-desc的属性值desc开始)
dr.find_element_by_android_uiautomator('new UiSelector().descriptionStartsWith("请输入QQ号码")').send_keys("1777982xxxx")
# descriptionMatches(content-desc中包含desc)
dr.find_element_by_android_uiautomator('new UiSelector().descriptionMatches(".*或邮箱$")').send_keys("1777982xxxx")
dr.find_element_by_android_uiautomator('new UiSelector().descriptionMatches(".*QQ号码或手机.*")').send_keys("1777982xxxx")
5、find_elements_by_xxx() 用法
dr.find_elements_by_class_name("android.widget.EditText")
dr.find_elements_by_id("com.tencent.mobileqq:id/btn_login")
# className
dr.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.TextView")')
# classNameMatches
dr.find_elements_by_android_uiautomator('new UiSelector().classNameMatches("^android.widget.*")'
6、tap() 坐标定位点击操作

tap(self, positions, duration=None):
:Args:
- positions - list类型,里面对象是元组,最多五个。如:[(100, 20), (100, 60)]
- duration - 持续时间,单位毫秒,如:500
# coding:utf-8
from appium import webdriver
from time import sleep
desired_caps = {
'platformName': 'Android',
'deviceName': '127.0.0.1:62001',
'platformVersion': '4.4.2',
'appPackage': 'com.baidu.yuedu',
'appActivity': 'com.baidu.yuedu.splash.SplashActivity'
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
sleep(5)
# 点弹出框去看看
driver.tap([(810, 1776), (1080, 1905)], 500)
# 返回上一页
driver.back()
sleep(2)
五、通过不同的定位方式查找元素
我们也可以通过 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-desktop元素定位的更多相关文章
- Appium Desktop 元素定位和脚本录制功能
Appium Desktop除了可以做Server之外还可以进行元素定位和脚本录制功能,点击放大镜按钮,进入页面设置.开始配置Desired Capabilities. 配置Desired Capab ...
- 初探appium之元素定位(1)
无论是selenium还是appium,元素定位都是我们开始实现自动化面临的第一个问题.selenium还好,我们可以在浏览器的调试页面进行元素定位还是蛮方便的.那么appium怎么做呢? 我看到很多 ...
- Appium Android 元素定位方法 原生+H5
APPIUM Android 定位方式 1.定位元素应用元素 1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement eleme ...
- Appium自动化(10) - appium高级元素定位方式之 UI Automator API 的详解
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 前面介绍过根据id,clas ...
- Appium + Python -------------元素定位
说在前面 1.https://github.com/appium/python-client/tree/master/test 里面有一些test ,可以看看,研究研究 2.学会使用 uiautom ...
- appium xpath元素定位
1.id定位 写法:driver.find_element_by_id("这里是resource-id") 2.name定位 name定位就是通过UI Automator工具查看的 ...
- Appium+Python 自动化-appium常用元素定位方法
https://www.cnblogs.com/rabbit-testing/p/8042733.html 大牛 https://blog.csdn.net/kaka1121/article/deta ...
- 【APP自动化】Appium Android 元素定位方法 原生+H5
参考资料: http://blog.csdn.net/vivian_ljx/article/details/54410024
- appium自动化测试之元素定位
方法一 使用SDK中附带的uiautomatorviewer来定位 在SDK安装目录下的tools下有个uiautomatorviewer.bat批处理文件点击运行 运行后(注意appium desk ...
- Python+Appium自动化测试(5)-appium元素定位常用方法
对于Android而言,查找appUI界面元素属性的工具有三种:appium desktop,uiautomatorviewer.bat,weditor.之前已经介绍过了weditor的使用,这里我将 ...
随机推荐
- 复旦大学2018--2019学年第二学期高等代数II期末考试情况分析
一.期末考试成绩班级前十名 丁思成(99).周烁星(97).王捷翔(96).顾文颢(92).顾天翊(90).封清(89).张思哲(89).李哲蔚(88).陈钦品(88).邹年轶(88).王祝斌(88) ...
- 常用Linux软件安装
JDK 先从Oracle官网下载JDK Linux版本的安装包,上传到服务器,这里推荐在服务器中创建一个目录/software,可以将所有软件的安装包放在这个目录下(或者是/opt目录下),将软件包解 ...
- <每日 1 OJ> -LeetCode20. 有效的括号
题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可 ...
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了(持续更新)
前面的文章中,一直在强调2019系列的idea无法使用补丁进行永久激活,但是最近发现,已经有大佬可以利用补丁将idea 2019.2及以下版本激活到2089年了,而且还不用改hosts,实在是佩服,不 ...
- 几句话总结一个算法之CTR预估模型
背景 假设现在有个商品点击预测的任务,有用户端特征性别.年龄.消费力等,商品侧特征价格.销量等,样本为0或者1,现在对特征进行one hot encode,如性别特征用二维表示,男为[1,0],女为[ ...
- 上传文件到新浪云Storage的方法
上传文件到新浪云Storage的方法,兼容本地服务器 if (!empty($_FILES['sharepic']['name'])){ $tmp_file = $_FILES['sharepic'] ...
- React组件介绍与使用(父传子、子传父、兄弟传)
1.创建组件的方法 1.1.函数式无状态组件 1.1.1.语法 1 function myComponent(props) { 2 return 3 <div>Hello {pro ...
- magic模块 :Exception Value:failed to find libmagic. Check your installation
原因 缺少安装依赖: magic 安装依赖: https://github.com/ahupp/python-magic#dependencies windows下解决方法: https://gith ...
- 迭代子(Iterator)模式
迭代子模式又叫做游标模式.迭代子模式可以顺序地访问一个聚集中的元素而必暴露聚集的内部表象. 1. 聚集和Java聚集 多个对象在一起形成的总体形成聚集(Aggregate),聚集对象是能够包容一组对 ...
- 关于AQS的一点总结
关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数:772 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ ...