#coding:utf-8 #解决中文乱码问#Import the common package

from appium importwebdriverfrom time importsleep#初始化

desired_caps ={}

desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '4.4.4'desired_caps['deviceName'] = 'f48e929e7371'desired_caps['appPackage'] = 'com.smartlifev30'desired_caps['appActivity'] = 'com.smartlifev30.activity.GuideActivity'desired_caps['unicodeKeyboard'] = 'True' #键盘支持中文输入要添加该代码

desired_caps["resetKeyboard"] = 'True' #隐藏手机自带的虚拟键盘,防止遮挡元素

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#集中定义局部变量

appnme = "com.smartlifev30"username= "13……"pwd= '1'goalGeteway= "sn号:000c43132……b"tianjia= '添加设备'

#检查app是否安装,Flag=True/False

Flag =driver.is_app_installed(appnme)print("smartlife APP是否已经安装:",Flag)#if not Flag:#driver.install_app("C:/Users/Lenovo/Desktop/android_v3.0.7……4.1.apk")#sleep(30)#sleep(28)

#app检测到新版本时,会提示弹出“下载更新"的框,此次需要加判断(若有新版本暂时不更新,无新版时,无任何操作#无新版本时,定位不到弹出框界面的”否“按键,因此要try捕获异常,从而让程序继续往下执行,不会终止运行。

try:

driver.find_element_by_id("android:id/button2").click()exceptException as e:print("未检测到新版本,line=36:", e)

sleep(1)#登录服务器模块---????????----可以抽象为一个方法 抽象为一个对象,分别适合与哪些情况#要考虑使用token方式进行登陆,故用try-except进行判断

try:

driver.find_element_by_id("com.smartlifev30:id/phone_number").clear()

driver.find_element_by_id("com.smartlifev30:id/phone_number").send_keys(username)

sleep(3)

driver.find_element_by_id("com.smartlifev30:id/password").clear()

driver.find_element_by_id("com.smartlifev30:id/password").send_keys(pwd)

sleep(2)

driver.find_element_by_id("com.smartlifev30:id/btn_login").click()

sleep(10)exceptException as e:print("未显示登录界面,已用token登录,line=52:", e)#在网关列表,选择目标网关进行登录(考虑列表中有个网关的情况)

if driver.find_element_by_id("com.smartlifev30:id/theme").text ==tianjia :print('恭喜你已经进入网关列表界面')

snLst= driver.find_elements_by_id("com.smartlifev30:id/hareware_sn")for tempName insnLst:if tempName.text ==goalGeteway :

tempName.click()breaksleep(23)#我的--设置--情景设置--添加软场景(可调光控制器支持20个场景表)

driver.find_element_by_id("com.smartlifev30:id/home_mine").click()

sleep(1)

shezhi=driver.find_element_by_id("com.smartlifev30:id/mineopt_item_txt").textif shezhi == "设置":

driver.find_element_by_id("com.smartlifev30:id/mineopt_item_txt").click()

sleep(1)#定位到情景设置按键,进入管理界面

setLen=driver.find_elements_by_id("com.smartlifev30:id/hc_item_txt")if len(setLen) >3:if driver.find_elements_by_id("com.smartlifev30:id/hc_item_txt")[3].text == '情景设置':

driver.find_elements_by_id("com.smartlifev30:id/hc_item_txt")[3].click()#添加软场景--(添加指定名称的设备到场景中)

for i in range(1,6):#点击+,添加软场景

driver.find_element_by_id("com.smartlifev30:id/btn_add").click()#输入情景名称

driver.find_element_by_id("com.smartlifev30:id/edit_scene_name").send_keys("secens"+str(i))#进入房间管理界面

driver.find_element_by_id("com.smartlifev30:id/edit_room_select").click()#选择第一个房间

driver.find_element_by_id("com.smartlifev30:id/ll_room_item").click()#添加设备(需在第一个房间中)

driver.find_element_by_id("com.smartlifev30:id/add_dev").click()#在设备列表界面,选中要添加的设备

devLst = driver.find_elements_by_id("com.smartlifev30:id/contact_name")for oneDev indevLst:if oneDev.text == '可调光':

oneDev.click()break

#选择好了设备,点击保存按键

driver.find_element_by_id("com.smartlifev30:id/btn_confirm").click()#在情景记录编辑界面--设置可调光的开关情况

driver.find_element_by_id("com.smartlifev30:id/txt_instruct").click()#设置可调光均为关

driver.find_element_by_id("com.smartlifev30:id/iv_title_right").click()#在情景记录的编辑界面,点击保存按键

driver.find_element_by_id("com.smartlifev30:id/btn_confirm").click()

sleep(1)

sleep(10)#删除所有情景记录--可能会出现的问题,比如删除前查询到总记录=5,删除3条后,删第4条时,若按index=3删除,则会定位失败,因为当前界面只有2个记录了。所以每次总删第一条,循环5次即可。

deLst = driver.find_elements_by_id("com.smartlifev30:id/btn_item_del")for delSecen indeLst:

driver.find_element_by_id("com.smartlifev30:id/btn_item_del").click()

driver.find_element_by_id("android:id/button1").click()#依赖当前所处菜单级数,决定后退几次才能返回主界面,才能在主界面定位“我的”-->退出登录

driver.find_element_by_id("com.smartlifev30:id/home_mine").click()

sleep(10)

driver.find_element_by_id("com.smartlifev30:id/login_out").click()#结束测试

driver.quit()

python模拟手机充值场景_appium+Python实例(二)模拟新建场景表(辅助测试执行)...相关推荐

  1. Python 柱状图 横坐标 名字_Python爬虫实例(二)——爬取新馆疫情每日新增人数

    python是世界上最美的语言. 大家好,我是Henry! 疫情以来,相信大家每天都关注着疫情的实时动态,许多网站上也post了疫情的相关资料. 百香园 百度 各个网站都会统计每日新增,刚学了Matp ...

  2. python点击屏幕坐标_Appium+python自动化(二十二)- 三个臭皮匠顶个诸葛亮-控件坐标获取(超详解)...

    简介 有些小伙伴或者是童鞋可能会好奇会问上一篇中的那个monkey脚本里的坐标点是如何获取的,不是自己随便蒙的猜的,或者是自己用目光或者是尺子量出来的吧,答案当然是:NO.获取控件坐标点的方式这里宏哥 ...

  3. 用python写atm自动取款_python实例_模拟ATM取款机+购物商城

    #-*-UTF-8-*- importosimportsysimportreimportlogging BASE_DIR= (os.path.dirname(os.path.abspath(__fil ...

  4. python app自动化测试框架_appium+python,app自动化测试框架

    基于appium的app自动化测试框架 基于appium框架的app自动化测试 App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于we ...

  5. python控制手机模拟器_Appium+python自动化之连接模拟器并启动淘宝APP(超详解)...

    简介 上一篇讲解完模拟器的安装.配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑 ...

  6. python手机自动化命令_Appium+Python实现自动化登录

    #Appium+Python实现自动化测试 Appium简介 官方的概述为: Appium is an open source test automation framework for use wi ...

  7. python自动化元素定位_Appium+Python自动化 4 -appium元素定位

    appium定位app上的元素方式 在前面文章中有介绍,(通过UIautomator工具查看app元素) appium定位app上的元素,可以通过id,name,class这些属性定位到 1.id 定 ...

  8. python滑动手机屏幕_appium+python自动化24-滑动方法封装(swipe)

    swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, ...

  9. python控制手机模拟器_Appium+python自动化23-Android夜神模拟器

    前言 Android SDK虽然也自带了模拟器,但是那速度会让你怀疑人生,并且不稳定经常卡死异常.夜神模拟器可以说是android模拟器里面的一个神器. 环境安装 2.夜神安卓模拟器(夜神模拟器),是 ...

最新文章

  1. Android之linux基础教学之七 中断下半部之软中断
  2. muduo之EventLoopThreadPool
  3. 数据中心空调施工工序工艺管理要点
  4. php : RBAC 基于角色的用户权限控制-表参考
  5. 吉林大学c语言考试题库,吉林大学C语言题库.docx
  6. 闭包、执行环境、作用域链
  7. sql中where和on的区别
  8. java中检测数据波动_在pyspark数据帧中检测异常值
  9. Spark : ExitCodeException exitCode=15,exitCode=13
  10. Python 快速部署安装所需模块
  11. IDEA如何添加项目启动参数
  12. 关于编程开发的最小系统学习法
  13. “用户请求取消当前的操作”的几种解决办法
  14. PSI(隐私集合求交集)的几类基础思想
  15. 李宏毅机器学习L6 GAN
  16. 架构师修炼之道学习笔记
  17. 2022-02-16 工作记录--Swiper-实现跑马灯效果:鼠标经过时停止滑动,鼠标离开后继续滑动
  18. word中图片不显示怎么办
  19. Android Toast 使用
  20. pandas——交叉表与透视表

热门文章

  1. 计算机丢失pcdsp.dll,计算机libcef.dll丢失
  2. ajax手册看云,下拉菜单Ajax(1.3.3+)
  3. python找不到模块文件夹_python – __init__.py在同一目录中找不到模块
  4. H3C 路由度量值(Metric)
  5. Django-C003-视图
  6. 函数指针数组指针+结构体数组
  7. 小学四则运算结对项目报告(GUI)
  8. C语言描述栈的实现及操作(数组实现)
  9. JDBC连接池和DBUtils
  10. ueditor上传图片尺寸过大导致显示难看的解决办法