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("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毫秒)
如下图:向左滑动
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() #存在执行