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. eclipse使用Gitlab

    1.生成SSH key 用的是eclipse自带的生成key的工具,windows->preferences->General->Network Connections->SS ...

  2. CF979C Kuro and Walking Route(简单的dfs/树形dp)

    题意:给出一个$n$个点,$n-1$条边的无向连通图,给出两个点$x,y$,经过$x$后的路径上就不能经过$y$,问可以走的路径$(u,v)$有多少条,($(u,v)$和$(v,u)$考虑为两条不同的 ...

  3. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  4. Python网络爬虫实战(四)模拟登录

    对于一个网站的首页来说,它可能需要你进行登录,比如知乎,同一个URL下,你登录与未登录当然在右上角个人信息那里是不一样的. (登录过) (未登录) 那么你在用爬虫爬取的时候获得的页面究竟是哪个呢? 肯 ...

  5. http响应

    1.http响应 2.响应行常见状态码 200 :请求成功. 302 :请求重定向. 当访问网址A时,由于网址A服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B. 304 :请求资源没有 ...

  6. The 10 Most Important Linux Commands/10个最经常使用的命令行

    1. ls 命令:to show all of the major directiories filed under a given file system. for example: ls /app ...

  7. 链表实现比较高效的删除倒数第k项

    最近写链表不太顺,无限的段错误.今天中午写的链表删除倒数第k项,用的带尾节点的双向链表,感觉已经把效率提到最高了,还是超时,改了很多方法都不行,最 终决定看博客,发现原来是审题错了,阳历给的是以-1结 ...

  8. Spring Boot 多站点利用 Redis 实现 Session 共享

    如何在不同站点(web服务进程)之间共享会话 Session 呢,原理很简单,就是把这个 Session 独立存储在一个地方,所有的站点都从这个地方读取 Session. 通常我们使用 Redis 来 ...

  9. POA理论:不要被你的目标欺骗了你

    ![](https://img2018.cnblogs.com/blog/330316/201909/330316-20190922210844977-255725510.jpg) 最近通过<跃 ...

  10. 初学Spring的感觉

    1.使用接口 不同的类实现同一接口后都会变成同一类型的类.   spring作业1的思路 lab1: 建立一个有一个输出方法的接口类|并建一个英语类和一个数学类实现该接口.   这两个实现类都重写了那 ...