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的profile构建不同环境配置

    基本概念说明(resources.filter和profile): 1.profiles定义了各个环境的变量id 2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profil ...

  2. 零基础一年拿下BAT三家offer

    背景 1.本人本科一本双非垫底的那种,硕士211.本硕电子通信,完全0基础,转行一年. 2.研一上第一学期上课+外派到老师合作公司写MATLAB.去年4月开始学习Java. 起步 1.实话说,刚决定转 ...

  3. sql注入(从入门到进阶)

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  4. CentOS7 自定义登录前后欢迎信息

    博客地址:http://www.moonxy.com 一.摘要 本人当前使用的是阿里云 ECS 服务器,操作系统为 linux,发行版为 CentOS 7.4.1708.系统默认都已经提供了欢迎信息, ...

  5. charles 设置为chrome代理

    本文参考:charles 设置为chrome代理 将charles设置为chrome的代理 需要注意的是,Chrome 和 Firefox 浏览器并不一定使用的就是本机,可能是一些代理工具,而 Cha ...

  6. day 3 总结

  7. python里的while循环和if循环

    一.循环的概念 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,常见的有按照次数循环和按条件循环. 二.循环的基本格式 (while循环的基本格式) a=1#定义一个数 while a==1 ...

  8. 给Xshell增加快速命令集

    一.显示快速命令栏 二.配置快速命令集 在工具中找到快速命令集 添加快速命令集 三.使用快速命令集

  9. [Advanced Python] 13 - "Decorator": syntactic sugar

    单独一章复习:Python 函数装饰器,廖雪峰讲装饰器 基本概念 函数作为变量 从函数中返回函数 子函数写在外面貌似也可以,可这样就少了“封装性”. def greet(): return " ...

  10. Linux之VMWare下Centos7的三种网络配置过程

    Linux之VMWare下Centos7的三种网络配置过程 环境: 虚拟软件:VMWare 14.0 客户机:windows 10 虚拟机:centos 7 VMware三种网络连接方式 Bridge ...