赞
踩
Menu:企业微信移动app测试实战(1)
adb devices #查看连接的手机设备 adb shell #进到手机系统 adb logcat #能够抓取到崩溃日志 adb shell dumpsys window|grep mCurrent #获取当前页面的包名和activity name adb logcat |grep -i displayed #获取 app入口 packagename 和activityname #启动应用前经过的欢迎页、广告才进入首页 # -i 表示忽略大小写 adb logcat |grep -i 'activitymanager' #也可以获取 app入口的包名和页面名,有的时候使用上面的命令拿不到启动页面的名称,可以使用这个命令,此命令windows上 通过git bash来运行 aapt dump badging mobike.apk | grep launchable-activity #分析 apk包 获取包名和启动页名 adb install path/to/apk文件 #安装apk文件 #appium caps配置 #等待idle 设置时间为0 ,默认是等待10s ,设定完成后完成提速 caps['settings[waitForIdleTimeout]'] = 0 #windows: 将上面的命令中 grep 换成 findstr #通过命令行方式来验证获取的包名和启动页名称是否正确 启动应用: #该命令行通过appium server获取得到 adb shell am start -W -n <package-name> <activity-name> -S #命令行方式启动应用,通过这种方式来验证包名和启动页名字是否正确 #adb shell am start -W -n com.tencent.wework/.launch.LaunchSplashActivity 企业微信实战1-企业微信自动打卡 打卡用例 前提条件: 已登录状态(noRest=True) 打卡用例: 1.打开【企业微信】应用 2.等待直到进入主页 3.点击下方导航栏中的【工作台】进入到工作台界面 4.在页面上查找【打卡】标签,点击打卡,进入到打卡页面 5.切换到【外出打卡】tap 6.点击【第X次外出】,验证外出打卡成功
实现滑动效果
1.touch_action , 根据手机屏幕宽度、高度 来滑动一定位置
2.移动端xml文件 滚动查找元素
移动端xml文件 滚动查找元素
# 滚动查找 "打卡" 元素
self.driver.find_element(
MobileBy.ANDROID_UIAUTOMATOR,'new UiScrollable'
'(new UiSelector().'
'scrollable(true).'
'instance(0)).'
'scrollIntoView('
'new UiSelector().'
'text("打卡").instance(0));').click()
""" 企业微信实战1-企业微信自动打卡 打卡用例 前提条件: 已登录状态(noRest=True) 打卡用例: 1.打开【企业微信】应用 2.等待直到进入主页 3.点击下方导航栏中的【工作台】进入到工作台界面 4.在页面上查找【打卡】标签,点击打卡,进入到打卡页面 5.切换到【外出打卡】tap 6.点击【第X次外出】,验证外出打卡成功 """ #!/usr/bin/env python # -*- coding: utf-8 -*- # This sample code uses the Appium python client # pip install Appium-Python-Client # Then you can paste this into a file and simply run with Python # appium-python-client 客户端脚本 from appium import webdriver from appium.webdriver.common.mobileby import MobileBy """ 改造1:pytest """ class TestWeChat: def setup(self): caps = {} caps["platformName"] = "android" caps["deviceName"] = "emulator-5554" caps["appPackage"] = "com.tencent.wework" caps["appActivity"] = ".launch.LaunchSplashActivity" caps["noReset"] = "true" caps["noReset"] = "true" caps['skipServerInstallation'] = 'true' # 跳过 uiautomator2 server的安装 caps['skipDeviceInitialization'] = 'true' # 跳过设备初始化 # caps['dontStopAppOnReset'] = 'true' # 启动之前不停止app caps['settings[waitForIdleTimeout]'] = 0 # 与server 建立连接,初始化一个driver 创建session,返回一个sessionid self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) self.driver.implicitly_wait(10) """打卡功能 """ def test_daka(self): # 步骤1:点击工作台 # el1 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.RelativeLayout[3]/android.widget.TextView") el1 = self.driver.find_element(MobileBy.XPATH, "//*[@text='工作台']") el1.click() # 滚动查找 "打卡" 元素 self.driver.find_element( MobileBy.ANDROID_UIAUTOMATOR,'new UiScrollable' '(new UiSelector().' 'scrollable(true).' 'instance(0)).' 'scrollIntoView(' 'new UiSelector().' 'text("打卡").instance(0));').click() # el2 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.view.ViewGroup/android.support.v7.widget.RecyclerView/android.widget.RelativeLayout[10]/android.widget.LinearLayout/android.widget.TextView") # el3 = self.driver.find_element_by_id("com.tencent.wework:id/gcx") # 点击"外出打卡" el3 = self.driver.find_element(MobileBy.ID, "com.tencent.wework:id/gcx") el3.click() # 点击第N次外出打卡 self.driver.find_element(MobileBy.XPATH, "//*[contains(@text, '次外出')]").click() # 验证打卡成功 result = self.driver.find_element(MobileBy.ID, 'com.tencent.wework:id/mk').text assert '打卡成功' in result def teardown(self): # 消毁session self.driver.quit()
是否在每个测试步骤都需要加上断言?
1、测试用例编写过程中的中间步骤,执行过程当中一般不需要加断言,除非中间操作过程当中要加入一些数据的验证,toast验证,等等。
2、最后的一行代码,要加入断言作为验证这条用例的真正结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。