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的profile构建不同环境配置
基本概念说明(resources.filter和profile): 1.profiles定义了各个环境的变量id 2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profil ...
- 零基础一年拿下BAT三家offer
背景 1.本人本科一本双非垫底的那种,硕士211.本硕电子通信,完全0基础,转行一年. 2.研一上第一学期上课+外派到老师合作公司写MATLAB.去年4月开始学习Java. 起步 1.实话说,刚决定转 ...
- sql注入(从入门到进阶)
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...
- CentOS7 自定义登录前后欢迎信息
博客地址:http://www.moonxy.com 一.摘要 本人当前使用的是阿里云 ECS 服务器,操作系统为 linux,发行版为 CentOS 7.4.1708.系统默认都已经提供了欢迎信息, ...
- charles 设置为chrome代理
本文参考:charles 设置为chrome代理 将charles设置为chrome的代理 需要注意的是,Chrome 和 Firefox 浏览器并不一定使用的就是本机,可能是一些代理工具,而 Cha ...
- day 3 总结
- python里的while循环和if循环
一.循环的概念 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,常见的有按照次数循环和按条件循环. 二.循环的基本格式 (while循环的基本格式) a=1#定义一个数 while a==1 ...
- 给Xshell增加快速命令集
一.显示快速命令栏 二.配置快速命令集 在工具中找到快速命令集 添加快速命令集 三.使用快速命令集
- [Advanced Python] 13 - "Decorator": syntactic sugar
单独一章复习:Python 函数装饰器,廖雪峰讲装饰器 基本概念 函数作为变量 从函数中返回函数 子函数写在外面貌似也可以,可这样就少了“封装性”. def greet(): return " ...
- Linux之VMWare下Centos7的三种网络配置过程
Linux之VMWare下Centos7的三种网络配置过程 环境: 虚拟软件:VMWare 14.0 客户机:windows 10 虚拟机:centos 7 VMware三种网络连接方式 Bridge ...