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 ...
随机推荐
- Maven学习归纳(四)——传递依赖和依赖的规则
一.传递依赖 官方文档解释的传送门:http://ifeve.com/maven-dependency-mechanism/ 当存在传递依赖的情况时,主工程对间接依赖的jar可以访问吗? 例如:A.j ...
- spring boot整合kafka
最近项目需求用到了kafka信息中间件,在此做一次简单的记录,方便以后其它项目用到. 引入依赖 <dependency> <groupId>org.springframewor ...
- Redis的实现(java)
日常操作 public static void main(String[] args) { Jedis jedis = ); //1.开启事务 Transaction transaction = je ...
- 松软科技课堂:数据库-主键(PrimaryKey)
主键就是一个表中每个数据行的唯一标识.不会有重复值的列才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键 主键有两种选用策略:业务主键和逻辑主键.业务主键是使用有业务意 ...
- [Advanced Python] 12 - Interview Quiz
第一步.大扫荡复习 Resource: https://www.liaoxuefeng.com/wiki/1016959663602400/1016959735620448 IDE:https://r ...
- CentOS7下LVM的基本操作
CentOS7下LVM的基本操作-创建LVM 环境 物理主机:windows10 虚拟软件:VMWare14 虚拟机:CentOS Linux release 7.6.1810 (Core) 软件环境 ...
- Codeforces Numbers 题解
这题只需要会10转P进制就行了. PS:答案需要约分,可以直接用c++自带函数__gcd(x,y). 洛谷网址 Codeforces网址 Code(C++): #include<bits/std ...
- Java 世界的盘古和女娲 —— Zygote
本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 文中源码链接: Zygote.java ZygoteInit.java ZygoteServer.java ...
- 浅谈JavaScript的闭包原理
在一般的教程里,都谈到子作用域可以访问到父级作用域,进而访问到父级作用域中的变量,具体是如何实现的,就不得不提及到函数堆栈和执行上下文. 举个例子,一个简单的闭包: 首先,我们可以知道,examp ...
- Jetpack系列:LiveData入门级使用方法
Android APP开发中,开发者们都想有一个公共的组件,可以实现后台数据的监听,同时实时更新到UI进行显示,从而大大简化开发过程.Google针对这一开发需求,提供了Jetpack LiveDat ...