Python+Appium学习篇之元素定位

摘要:
背景:以QQ邮箱为例;APPIUM版本=1.81.list下标位置首先,查看两个位置信息。可以看到,这里收件箱的资源ID与星形邮件的资源ID相同。在这里,您可以使用列表查找收件箱u“”列表下标位置“”driver.find_elements_by_Id('com.tencent.androidqqmail:Id/q0')[0]。click()2.xpath定位在这里可以看作是通用定位

背景:

QQ邮箱为例;APPIUM版本=1.8

1. list下标定位

先看两个定位信息

Python+Appium学习篇之元素定位第1张

Python+Appium学习篇之元素定位第2张

可以看出这里的  收件箱  和 星标邮件 的resource-Id 是一样的,这里就可以用list来定位  收件箱 了

u'''list下标定位'''
driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')[0].click()

2.xpath定位

在这里可以看成是一个万能的定位,只要后面的  收件箱 文本是唯一的就行

u'''xpath定位'''
driver.find_element_by_xpath("//*[@text='收件箱​']").click()

3.content-desc定位

这里就用 accessibility_id 来定位

Python+Appium学习篇之元素定位第3张

u'''con-desc定位'''
driver.find_element_by_accessibility_id('写邮件和设置等功能').click()

4.文本定位

这里就用到 uiautomator 了

Python+Appium学习篇之元素定位第4张

u'''文本定位'''
ele='text("收件箱​")'
driver.find_element_by_android_uiautomator(ele).click()

5.组合定位

组合定位可以更精准,这个可以自由搭配(index+text,classname+id等等)

Python+Appium学习篇之元素定位第5张

u'''组合定位(id+text)'''
ele='resourceId("com.tencent.androidqqmail:id/q0").text("收件箱​")'
driver.find_element_by_android_uiautomator(ele).click()

6.父子定位

这里就来定位  写邮件和设置等功能 按钮

Python+Appium学习篇之元素定位第6张 

Python+Appium学习篇之元素定位第7张

可以找到找到儿子的 resourceId

Python+Appium学习篇之元素定位第8张

这里可以找到父亲的classname

父亲写前面,儿子写后面

u'''父子定位'''
ele='className("android.widget.RelativeLayout").childSelector(resourceId("com.tencent.androidqqmail:id/f"))'
driver.find_element_by_android_uiautomator(ele).click()

7.兄弟定位

Python+Appium学习篇之元素定位第9张  Python+Appium学习篇之元素定位第10张

找到能定位他们两个的东东,这里就找了 resourceId

u'''兄弟定位'''
ele='resourceId("com.tencent.androidqqmail:id/k").fromParent(resourceId("com.tencent.androidqqmail:id/f"))'
driver.find_element_by_android_uiautomator(ele).click()

8.包含定位

Python+Appium学习篇之元素定位第11张

u'''包含定位'''
driver.find_element_by_xpath("//*[contains(text(),'【抢票】我能抢到票吗')]").click()

总代码:

# coding:utf-8
from appium import webdriver
import time
desired_caps = {'platformName': 'Android',
                'deviceName': 'emulator-5554',
                'platformVersion': '5.1.1',
                'noReset': True,
                'appPackage': 'com.tencent.androidqqmail',
                'appActivity': 'com.tencent.qqmail.launcher.desktop.LauncherActivity'}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(15)  #用的模拟器,sleep久点
a=driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')

print(len(a))  #主要是打印出来看看有多少个
time.sleep(3)
u'''list下标定位'''
#driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')[0].click()
u'''xpath定位'''
#driver.find_element_by_xpath("//*[@text='收件箱​']").click()
u'''con-desc定位'''
#driver.find_element_by_accessibility_id('写邮件和设置等功能').click()
u'''文本定位'''
#ele='text("收件箱​")'
#driver.find_element_by_android_uiautomator(ele).click()
u'''组合定位(id+text)'''
#ele='resourceId("com.tencent.androidqqmail:id/q0").text("收件箱​")'
#driver.find_element_by_android_uiautomator(ele).click()
u'''父子定位'''
#ele='className("android.widget.RelativeLayout").childSelector(resourceId("com.tencent.androidqqmail:id/f"))'
#driver.find_element_by_android_uiautomator(ele).click()
u'''兄弟定位'''
ele='resourceId("com.tencent.androidqqmail:id/k").fromParent(resourceId("com.tencent.androidqqmail:id/f"))'
driver.find_element_by_android_uiautomator(ele).click()
print('点击完毕')

免责声明:文章转载自《Python+Appium学习篇之元素定位》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue.js 源码分析(二十七) 高级应用 异步组件 详解测试开发-PC客户端测试要点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

WritableWorkbook 详细用例 (转)

1WritableWorkbookworkbook=工作簿.createWorkbook(newFile(“d:\test.xls”));1Workbookwb=工作簿.getWorkbook(newFile(“src\test\test.xls”));...

Revit导入lumion渲染

利用Revit导出DAE文件格式插件,可以将Revit模型导入到lumion中进行图片渲染和漫游动画的制作。lumion强大的漫游功能,丰富的附加组件,绚丽的视频特效。lumion没有建模功能,但是Revit建模的没有统一的标准,导致一些不该同样的材质的地方,无法更改;如果有统一的标准,那么Revit结合lumion能做出任何想要的效果。Revit13版本能...

java实现word转pdf文件(高效不失真)

importjava.io.File;importjava.io.FileOutputStream;importjava.io.InputStream;importorg.aspectj.weaver.ast.Test;importcom.aspose.words.Document;importcom.aspose.words.License;importc...

Unreal Engine is exiting due to D3D device being lost

先保证显卡驱动最新,然后打开显卡控制面板,关掉“优化以提高计算性能”:参考的是游戏玩家的经验总结:黄卡驱动“优化以提升计算性能”疑问,附简单测试其他常规解决方案:1.[Solved]UnrealEngineisexitingduetoD3Ddevicebeinglost2.由于D3D设备丢失,如何解决虚幻引擎闪退问题?...

Ansible-Tower--安装配置及破解

Ansible-Tower是将ansible的指令界面化,简明直观,简单易用。2)Ansibke-tower其实就是一个图形化的任务调度,复杂服务部署,IT自动化的一个管理平台,属于发布配置管理系统,支持Api及界面操作,Django编写。3)Ansible-tower可以通过界面从github拉取最新playbook实施服务部署,提高生产效率。...

PNETLab模拟器部署及使用配置

为了提高虚拟网络的仿真程度,您可以运行IOL(Cisco IOSonLinux)、Dynamips、Quem和其他图像来支持在线实验拓扑下载。...