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元素定位的更多相关文章

  1. XP定位(APP元素定位)

    Appium app自动化测试经验分享-Xpath定位总结 在我看来,自动化测试中元素定位的倚天剑和屠龙刀莫过于 Xpath和CSS,但CSS只用于Web(之前已经分享过),这次就分享下Xpath的定 ...

  2. App元素定位三种方法

    来自博客: http://testingpai.com/article/1595507262082 以下方法操作前必须确保有手机设备连入电脑,检测是否有手机连入命令 adb devices 第一种:A ...

  3. APP元素定位和操作

    webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()find_element_ ...

  4. APP元素定位工具weditor

    github地址https://github.com/openatx/weditor python -m weditor --shortcut adb devices 在页面上输入手机设备号,点Con ...

  5. Appium中app的元素定位

    app定位方式,本文只讲Android手机的定位方式. 前提条件是adb连接到模拟器或者是手机(具体连接方式这里不再讲解),证明已连接到设备 adb devices app元素定位工具一:UI Aut ...

  6. App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.App 元素定位方式 二.元素操作 三.测试混合应用 四.以代码的方式执行 Pytest 命 ...

  7. Appium常用操作之「元素定位、swipe 滑屏操作」

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.打开 uiautomatorviewer 二.Appium 常用操作 1.用 layui 做 ...

  8. 6.1 python+appium元素定位方式(登录app)

    1.0.0     :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...

  9. IOS版App的控件元素定位

    前言 Android版App的控件元素可以通过Android studio自带的工具uiautomatorviewer来协助定位! IOS版App的控件元素可以通过Appium来实现(未实现),或ap ...

随机推荐

  1. Maven学习归纳(四)——传递依赖和依赖的规则

    一.传递依赖 官方文档解释的传送门:http://ifeve.com/maven-dependency-mechanism/ 当存在传递依赖的情况时,主工程对间接依赖的jar可以访问吗? 例如:A.j ...

  2. spring boot整合kafka

    最近项目需求用到了kafka信息中间件,在此做一次简单的记录,方便以后其它项目用到. 引入依赖 <dependency> <groupId>org.springframewor ...

  3. Redis的实现(java)

    日常操作 public static void main(String[] args) { Jedis jedis = ); //1.开启事务 Transaction transaction = je ...

  4. 松软科技课堂:数据库-主键(PrimaryKey)

    主键就是一个表中每个数据行的唯一标识.不会有重复值的列才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键 主键有两种选用策略:业务主键和逻辑主键.业务主键是使用有业务意 ...

  5. [Advanced Python] 12 - Interview Quiz

    第一步.大扫荡复习 Resource: https://www.liaoxuefeng.com/wiki/1016959663602400/1016959735620448 IDE:https://r ...

  6. CentOS7下LVM的基本操作

    CentOS7下LVM的基本操作-创建LVM 环境 物理主机:windows10 虚拟软件:VMWare14 虚拟机:CentOS Linux release 7.6.1810 (Core) 软件环境 ...

  7. Codeforces Numbers 题解

    这题只需要会10转P进制就行了. PS:答案需要约分,可以直接用c++自带函数__gcd(x,y). 洛谷网址 Codeforces网址 Code(C++): #include<bits/std ...

  8. Java 世界的盘古和女娲 —— Zygote

    本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 文中源码链接: Zygote.java ZygoteInit.java ZygoteServer.java ...

  9. 浅谈JavaScript的闭包原理

    在一般的教程里,都谈到子作用域可以访问到父级作用域,进而访问到父级作用域中的变量,具体是如何实现的,就不得不提及到函数堆栈和执行上下文. 举个例子,一个简单的闭包:   首先,我们可以知道,examp ...

  10. Jetpack系列:LiveData入门级使用方法

    Android APP开发中,开发者们都想有一个公共的组件,可以实现后台数据的监听,同时实时更新到UI进行显示,从而大大简化开发过程.Google针对这一开发需求,提供了Jetpack LiveDat ...