App元素定位

1.元素定位(采用Appium-desktop自带的工具)

 App元素定位_第1张图片

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不清除数据

}

App元素定位_第2张图片

1.2在模拟器中打开app

1.3定位工具页面如下,且通过元素定位按钮和刷新按钮进行页面切换和进行元素定位

 App元素定位_第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.3pycharm上编写脚本,开始第一条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("com.yw.yzz:id/login_name").send_keys("17779828883")

driver.find_element_by_id("com.yw.yzz:id/login_identify_code").send_keys("123456")

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毫秒)

如下图:向左滑动

 App元素定位_第4张图片

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元素定位)