appium+Python实例(二)模拟新建场景表(辅助测试执行)
背景:
测试目的:测试各个设备的场景表极限
需求:1.已知A设备上可存储的场景表是80个,B设备上可存储的场景表是40个
2.从网关删除场景记录后,会通知设备去删除它自己的场景记录
3.设备重新组网后,会清除自身存储的场景表,而网关数据库的场景记录仍存在
此篇目的是用脚本来实现创建80个场景表的过程,核心点仍需手动测试。
# coding:utf-8 #解决中文乱码问 # Import the common package from appium import webdriver from time import sleep #初始化 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() except Exception 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) except Exception 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 in snLst: if tempName.text == goalGeteway : tempName.click() break sleep(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").text if 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 in devLst: 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 in deLst: 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()
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
脚本基本上属于边调试边执行用例,不够智能,代码结构还有很多地方需要优化,只能说是辅助测试的一种手段,加油,离测试开发的距离还远呐。
-----------------------------------------Have a good day!---------------------------------------------------------------------------------------------------

浙公网安备 33010602011771号