App元素定位
1.元素定位(采用Appium-desktop自带的工具)
1.1将初始化参数复制进去校验json格式正确且保存后,点击start session
初始化参数来源如下:
# 定义启动设备需要的参数 desired_caps = { "platformName": "Android", #手机系统 "deviceName": "127.0.0.1:62001",#设备名称,在dos输入adb devices获取 "platformVersion": "5.1.1", #手机系统版本 "appPackage": "com.yw.yzz", #包名(#在dos下进入xxx.apk所存在的文件夹中,输入aapt dump badging xxx.apk获取) "appActivity": "com.yw.yzz.biz.splash.SplashActivity",#APP活动 (#在dos下进入xxx.apk所存在的文件夹中,输入aapt dump badging xxx.apk获取) "unicodeKeyboard": "True",#使用appium的输入法,支持中文并隐藏键盘 "resetKeyboard": "True", #将输入法重置回设备默认的输入法 "noReset": "True"#appium启动app时会自动清除app里面的数据,noReset=True就是启动app不清除数据 }
1.2在模拟器中打开app
1.3定位工具页面如下,且通过元素定位按钮和刷新按钮进行页面切换和进行元素定位
1.4相同id情况下如何定位出元素
self.driver.find_elements_by_id("com.yw.yzz:id/tv_btn")[0]
用self.driver.find_elements_by_id("com.yw.yzz:id/tv_btn")找出所有id=com.yw.yzz:id/tv_btn的元素,返回是列表,再通过索引[0]取出第一个
1.5通过坐标定位driver.tap([(124,273),(232,396)],100)
bounds[340,342][448,363]:340表示x轴的开始,448表示x轴的的结束;342表示Y轴的开始,363表示Y轴的的结束,[340,342]表示X、Y轴的开始,这组坐标表示是左上角[448,363]表示表示X、Y轴的结束,这组坐标表示右下角
2.初始化脚本
2.1打开appium
2.2打开模拟器,且模拟器上已安装项目包
2.3在pycharm上编写脚本,开始第一条APP自动化脚本咯
#coding=utf-8 from appium import webdriver from time import sleep # 定义启动设备需要的参数 desired_caps = { "platformName": "Android", #手机系统 "deviceName": "127.0.0.1:62001",#设备名称,在dos输入adb devices获取 "platformVersion": "5.1.1", #手机系统版本 "appPackage": "com.yw.yzz", #包名(#在dos下进入xxx.apk所存在的文件夹中,输入aapt dump badging xxx.apk获取) "appActivity": "com.yw.yzz.biz.splash.SplashActivity",#APP活动 (#在dos下进入xxx.apk所存在的文件夹中,输入aapt dump badging xxx.apk获取) "unicodeKeyboard": "True",#使用appium的输入法,支持中文并隐藏键盘 "resetKeyboard": "True", #将输入法重置回设备默认的输入法 "noReset": "True"#appium启动app时会自动清除app里面的数据,noReset=True就是启动app不清除数据 } driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps) #代码脚本和服务端是通过 http://127.0.0.1:4723/wd/hub 来进行通信的(固定格式) time.sleep(1) #打印屏幕高和宽 print(driver.get_window_size()) time.sleep(2) driver.swipe(500,400,30,400,1000)#向左滑动引导页 time.sleep(1) driver.swipe(500,400,30,400,1000) time.sleep(1) driver.swipe(500,400,30,400,1000) time.sleep(1) driver.find_element_by_id("com.yw.yzz:id/btn_open").click() time.sleep(4) driver.find_element_by_id("com.yw.yzz:id/recyclerview").click() driver.find_element_by_id("com.yw.yzz:id/recyclerview").click() driver.find_element_by_id("com.yw.yzz:id/recyclerview").click() driver.find_element_by_id("com.yw.yzz:id/seting_tab").click() driver.find_element_by_id("com.yw.yzz:id/fragment_my_nickname").click() driver.find_element_by_id(") driver.find_element_by_id(") driver.find_element_by_id("com.yw.yzz:id/btn_login").click()
3.关键字
3.1.swipe用法
Swipe(x1,y1,x2,y2,duration)
解释:
x1-开始滑动的x坐标,y1-开始滑动的Y坐标
x2-结束点x坐标,y2-结束点y坐标
duration滑动事件(默认5毫秒)
如下图:向左滑动
3.2. is_displayed()判断某个元素是否存
self.driver.find_element_by_xpath("//android.widget.TextView[@instance='8']").click() #点击删除默认地址 try: self.driver.find_element_by_id("com.yw.yzz:id/dialog_im_title").is_displayed() #判断元素是否存在 except: print "Default address can not be deleted" #不存在执行 else: self.driver.find_element_by_id("com.yw.yzz:id/dialog_im_positive").click() #存在执行
App元素定位的更多相关文章
- XP定位(APP元素定位)
Appium app自动化测试经验分享-Xpath定位总结 在我看来,自动化测试中元素定位的倚天剑和屠龙刀莫过于 Xpath和CSS,但CSS只用于Web(之前已经分享过),这次就分享下Xpath的定 ...
- App元素定位三种方法
来自博客: http://testingpai.com/article/1595507262082 以下方法操作前必须确保有手机设备连入电脑,检测是否有手机连入命令 adb devices 第一种:A ...
- APP元素定位和操作
webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()find_element_ ...
- APP元素定位工具weditor
github地址https://github.com/openatx/weditor python -m weditor --shortcut adb devices 在页面上输入手机设备号,点Con ...
- Appium中app的元素定位
app定位方式,本文只讲Android手机的定位方式. 前提条件是adb连接到模拟器或者是手机(具体连接方式这里不再讲解),证明已连接到设备 adb devices app元素定位工具一:UI Aut ...
- App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.App 元素定位方式 二.元素操作 三.测试混合应用 四.以代码的方式执行 Pytest 命 ...
- Appium常用操作之「元素定位、swipe 滑屏操作」
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.打开 uiautomatorviewer 二.Appium 常用操作 1.用 layui 做 ...
- 6.1 python+appium元素定位方式(登录app)
1.0.0 :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...
- IOS版App的控件元素定位
前言 Android版App的控件元素可以通过Android studio自带的工具uiautomatorviewer来协助定位! IOS版App的控件元素可以通过Appium来实现(未实现),或ap ...
随机推荐
- print.js继承原有样式
npm install --save print-js import Print from 'print-js' 调用print.js插件 Print({ printable: 'printJS-fo ...
- 云原生生态周报 Vol. 19 | Helm 推荐用户转向 V3
作者| 禅鸣.忠源.天元.进超.元毅 业界要闻 Helm 官方推荐用户迁移到 V3 版本 Helm 官方发布博客,指导用户从 v2 迁移到 v3,这标志着官方开始正式推进 helm 从 v2 转向 v ...
- AutoCompleteTextView自动完成文本框
AutoCompleteTextView是从EditText派生出来的,比普通编辑框多了一个功能,当用户输入一定字符后,自动完成文本框会显示一个下拉单,供用户选择,当选中一个后,被选中的内容会显示在文 ...
- CoDeSys
CoDeSys是全球最著名的PLC内核软件研发厂家德国的3S(SMART,SOFTWARE,SOLUTIONS)公司出的一款与制造商无关的IEC 61131-1编程软件.CoDeSys 支持完整版本的 ...
- 超级密码(BFS)
Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息: 密码是一个C进 ...
- ckeditor中 config.js等通过ckeditor.js引入文件手动修改方法
因为除了ckeditor.js之外的引用文件是通过ckeditor.js自动添加<script>或<link>标签实现文件的引入,引入的根目录是展示页面的地址.有时需要手动修改 ...
- 【Python爬虫】第四课(查询照片拍摄地址)
首先,要能够查询到照片地址,查询的照片必须要开GPS拍,且上传时用原图…… 查询图片的exif信息,使用exifread包 import exifread img = exifread.process ...
- Android嵌入式开发初学者的几个注意点
一:首先你必须了解ARM平台 Android 移植与驱动核心开发,当然也可以是X86和其他的平台,不过其他平台的Android智能终端开发并不是很多. Android嵌入式智能操作系统是基于Linux ...
- [VB.NET Tips]ParamArray参数数组
ParamArray参数数组,可以理解为传递给方法的多余的参数全都存放在这个数组中. ParamArray只能是ByVal按值传递,不能是可选参数,而且只能做为方法定义的最后一个参数. 非常类似于Py ...
- C++基础之string类
string也是属于顺序容器,但是string类很重要且经常使用,因此在这里单独记录. string的操作总结 string(const char *s,int n); //用c字符串s初始化,s应 ...