python3+appnium1.10+Uiautomator2过程化脚本遍历测试(1)游客登录

一、设计思路:游客无网:关闭WiFi,关闭流量,健康习惯里有 多喝水,修改个人信息,退出登录;游客有网:打开WiFi,登录,健康习惯里有 多喝水,健康知识里有内容,修改的昵称等个人信息依旧有效。有网时运动:G0--->长按暂停--->切换到运动地图---->长按结束,并且对三种模式都进行测试。无网转有网,个人信息保存。

1、如果有用到坐标来找元素,最好把手机设置里的指针打开,方便观察点的位置。

元素定位参考:https://www.cnblogs.com/kaibindirver/p/8145478.html

https://www.cnblogs.com/xiaoyaowuming/p/7015900.html

import os
import time
from appium import webdriver
from appium.webdriver.webdriver import By
from selenium.webdriver.support.wait import WebDriverWait
from appium.webdriver.common.touch_action import TouchAction
import shutil
from pathlib import Path

def del_file(path):
    for elm in Path(path).glob('*'):
        elm.unlink() if elm.is_file() else shutil.rmtree(elm)
path_yk = r'D:\AppniumPro1\image_yk'  # 输入文件夹地址
del_file(path_yk)


desi_caps = dict()
desi_caps['platformName'] = 'Android'
desi_caps['platformVersion'] = '9'
desi_caps['deviceName'] = '19052315134267'
desi_caps['unicodeKeyboard'] = True
desi_caps['resetKeyboard'] = True
desi_caps['automationName'] = 'UIAutomator2'
# 包名
desi_caps['appPackage'] = 'com.waterworld.haifit'
# 界面名
desi_caps['appActivity'] = '.ui.module.account.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desi_caps)
time.sleep(15)
print("已等待15s启动应用------")
#----1、点同意按钮,已确认已经同意过权限
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/tv_dialog_agreement_right")).click()
print("已同意")
# driver.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().textContains(\"同意\")").click()

#---2、游客无网络登录
send_name = "youke_test"
defult_nichen = "HaFit"
test_nichen = defult_nichen +"_test"
os.system("adb shell svc wifi disable")#关闭WiFi
os.system("adb shell svc data disable")#关闭流量

print("已关闭WiFi")
time.sleep(1)
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().textContains(\"游客登录\")")).click()
print("已选择游客登录")
confirm = WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().textContains(\"确认\")"))
confirm.click()
login_name = WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.android.packageinstaller:id/permission_allow_button")).click()

#默认昵称是否为Hafit
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/tv_lrtv_right"))
nichen = driver.find_element(By.ID,"com.waterworld.haifit:id/tv_lrtv_right").text
print(nichen)
if nichen == defult_nichen:
    print("默认昵称是HaFit")
else: print("no HaFit")
WebDriverWait(driver,20).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().textContains(\"完成\")")).click()
# confirm.click()
# print("--------------")
#
# #通知权限获取
# WebDriverWait(driver,20).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"HaFit\")")).click()
# permit.click()
# driver.press_keycode(4)#点击返回键
# confirm.click()
# for i in range(3):
#     permit.click()
# confirm.click()
# WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"允许\")")).click()
# print("权限获取完毕")
time.sleep(3)
print("已切换到“健康”页面:")
WebDriverWait(driver,20).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"健康习惯\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().textContains(\"勤喝水\")"))
print("找到了 勤喝水")
driver.press_keycode(4)#点击返回键

print("切换到'我的'页面:")
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"我的\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/iv_edt_info")).click()  #右上角编辑
el_nichen = WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/lrtv_name"))
login_name = el_nichen.text
if login_name==defult_nichen:
    print("登录名是HaFit")


#---3、修改信息
#修改昵称
el_nichen.click()  #昵称
print("点击昵称")
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/et_dialog_edit_content")).send_keys(test_nichen)  #改昵称
print("######1、修改昵称成功")
confirm.click() #确认

#改性别 :女      "com.waterworld.haifit:id/tv_lrtv_right"
win_width =driver.get_window_size()['width']
win_height = driver.get_window_size()['height']
print("~~~~~~~~~~~~获取到分辨率了~~~~~~~~~~~~~~")
def swipe_select(id):
    WebDriverWait(driver, 15).until(lambda x: x.find_element(By.ID, id)).click()
    time.sleep(2)
    print("找到元素了,要开始滑动了::::")
    driver.swipe(win_width * 0.5, win_height * 0.57, win_width * 0.5, win_height * 0.39) #比例:元素/屏幕
    time.sleep(1)
    confirm.click()  # 含确认
swipe_select("com.waterworld.haifit:id/lrtv_sex")
print("######1、修改sex成功")

#改出生年 :1995    com.waterworld.haifit:id/tv_lrtv_right
swipe_select("com.waterworld.haifit:id/lrtv_birth_year")
print("######1、修改出生年成功")

#改身高
swipe_select("com.waterworld.haifit:id/lrtv_height")
print("######1、修改身高成功")

#改体重  62
swipe_select("com.waterworld.haifit:id/lrtv_weight")
print("######1、修改体重成功")

#改头像
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/head_img")).click() #头像
confirm.click()
#拍照
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"拍照\")")).click()
permit = WebDriverWait(driver,20).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"允许\")"))
permit.click()#文字允许
permit.click()#文字允许
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.android.camera2:id/camera_toggle_button_dream")).click() #翻转相机
time.sleep(2)
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.android.camera2:id/shutter_button")).click() #拍照按钮
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.android.camera2:id/done_button")).click() #照片确认
def back_screen(model):
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"保存副本\")")).click()
    print("已保存副本")
    time.sleep(3)
    driver.press_keycode(4)  # 点击返回键
    print("已返回")
    WebDriverWait(driver, 15).until(lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_edt_info")).click()  # 右上角编辑
    print("找到编辑了11111")
    time.sleep(2)
    driver.get_screenshot_as_file("../image_yk/%s%s.png" % (time.strftime("%Y_%m_%d %H_%M_%S"), model))
    print("更新之后存的个人信息的截图已保存")
back_screen("无网--拍照")
#相册获取
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ID,"com.waterworld.haifit:id/head_img")).click() #头像
print("已重新获取个人头像")
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"从手机相册获取\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"相机\")")).click()
print("已进入系统相册")
time.sleep(2)
#从坐标获取系统相册图片
# driver.tap( [(126 ,465)] ,1000)
# TouchAction(driver).press( x= int(win_height * 0.17) , y = int(win_width * 0.30) ).release().perform()
TouchAction(driver).press( x=126 , y =465 ).release().perform()
time.sleep(2)
back_screen("无网--从相册获取照片")


#我的 页面 每日目标、使用说明、关于  无网状态
#     一些信息判断
def contains_hafit():
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().textContains(\"HaFit\")"))
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().textContains(\"沃特沃德\")"))


def my_tag_about():
    #    每日目标
    driver.press_keycode(4)  # 点击返回键
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"每日目标\")")).click()
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"步数目标\")")).click()
    driver.swipe(win_width * 0.5, win_height * 0.57, win_width * 0.5, win_height * 0.39)  # 比例:元素/屏幕
    confirm.click()  # 包含确认
    driver.press_keycode(4)  # 点击返回键
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"每日目标\")")).click()
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"12000步\")"))
    print("每日目标没问题======")
    driver.press_keycode(4)  # 点击返回键

    #    使用说明
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"使用说明\")")).click()
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"手表防水吗?\")")).click()
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"手表防水吗?\")"))
    print("使用说明没问题======")
    driver.press_keycode(4)  # 点击返回键
    driver.press_keycode(4)  # 点击返回键

    #    关于  无网
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"关于\")")).click()
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"用户协议\")")).click()
    time.sleep(2)
    print("用户协议没问题======")

    contains_hafit()
    driver.press_keycode(4)  # 点击返回键

    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"隐私政策\")")).click()
    contains_hafit()
    driver.press_keycode(4)  # 点击返回键
    driver.press_keycode(4)  # 点击返回键


# 判断 我的 中昵称
driver.press_keycode(4)  # 点击返回键
username = WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/tv_mine_name")).text
if username == test_nichen:
    print("修改成功!")
    print("确认无网游客登录通过···········")


#连WiFi
os.system("adb shell svc wifi enable")
time.sleep(5)
driver.press_keycode(4)  # 点击返回键
#无网转有网,查看截图是否一致
WebDriverWait(driver, 15).until(lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_edt_info")).click()  # 右上角编辑
time.sleep(2)
driver.get_screenshot_as_file("../image_yk/%s%s.png" % (time.strftime("%Y_%m_%d %H_%M_%S"), "无网转有网的个人信息"))
driver.press_keycode(4)  # 点击返回键,到 我的页面
print("无网转有网,个人信息截图成功")

print("WiFi下验证每日目标、使用说明、关于:---------------------")
my_tag_about()
print("WiFi验证完毕---------------------")

WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"退出登录\")")).click()
confirm.click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"游客登录\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"健康贴士\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"血压小知识\")"))
print("已确认是有网状态")
driver.press_keycode(4)#点击返回键
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"我的\")")).click()
# name = WebDriverWait(driver, 15).until(lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/tv_mine_name")).click()  # 我的 昵称
if username==test_nichen:
    print("无网转有网,个人昵称转换成功")

#我的 信息:

# 运动模块
WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"运动\")")).click()
# WebDriverWait(driver, 15).until(
#         lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_sport_start")).click()
print("开始运动了!!!")
# permit.click()

    #跑步
def sport(xingshi):
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_sport_start")).click()  # GO
    print("进入GO---")
    if xingshi == "跑步":
        confirm.click()
        permit.click()
        time.sleep(3)
        WebDriverWait(driver, 15).until(
            lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_sport_start")).click()  # GO

    # 长按 跑步
    long_pause = WebDriverWait(driver, 20).until(
        lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/view_start_sport_pause"))
    TouchAction(driver).long_press(long_pause, duration=5000).release().perform()
    print("已暂停")
    print("进入地图====")
    time.sleep(3)
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_start_sport_map")).click()
    WebDriverWait(driver, 30).until(lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"时长\")"))
    time.sleep(5)
    driver.get_screenshot_as_file("../image_yk/%s%s.png"%(time.strftime("%Y_%m_%d %H_%M_%S"),xingshi))
    print("运动地图已截图%%%%")
    WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/iv_start_sport_close")).click()  # 叉掉
    long_stop = WebDriverWait(driver, 15).until(
        lambda x: x.find_element(By.ID, "com.waterworld.haifit:id/view_start_sport_stop"))
    TouchAction(driver).long_press(long_stop, duration=5000).release().perform()
    WebDriverWait(driver, 30).until(lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"结束运动\")")).click()
sport("跑步")

    #健走
WebDriverWait(driver, 30).until( lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"健走\")")).click()
sport("健走")

#登山
WebDriverWait(driver, 30).until( lambda x: x.find_element(By.ANDROID_UIAUTOMATOR, "new UiSelector().text(\"登山\")")).click()
sport("登山")

WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"我的\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"退出登录\")")).click()
WebDriverWait(driver,15).until(lambda x:x.find_element(By.ANDROID_UIAUTOMATOR,"new UiSelector().text(\"确认\")")).click()
print("游客模块已全部测试通过+++++++++++++++————————————————————————")









 

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值