【移动端】企业微信移动app测试实战

本文介绍了如何通过命令行工具ADB和Appium进行企业微信自动打卡,包括设备连接、应用启动、UI元素定位以及关键步骤的自动化脚本。重点讲解了如何利用UIAutomator查找并点击'打卡'功能,以及使用Appium Python Client进行测试用例编写和验证。
摘要由CSDN通过智能技术生成

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、最后的一行代码,要加入断言作为验证这条用例的真正结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值