App自动化测试之企微打卡、快手刷金币

本文为博主原创,未经许可严禁转载。
本文链接:https://blog.csdn.net/zyooooxie/article/details/112169770

今天来分享下,app自动化脚本 我的实际应用:企业微信打卡、快手刷金币。

个人博客:https://blog.csdn.net/zyooooxie

需求 + 解决思路

快手刷金币

这个需求详情:运行快手app,滑动页面,赚金币;

最终实现的思路:

  1. 手机插到电脑;
  2. 启动appium server;
  3. 触发脚本,启动app,随机时间 滑动【一直持续进行】;

企微打卡

这个需求详情:

  1. 上班:周一到周五 早上某时间点 触发;启动app,自动打卡;
  2. 下班:走人时,触发,自动延期半小时 启动app,定位元素,打卡;

最终实现的思路:

【上班】

  1. 企微 上班已设置快捷打卡;
  2. 电脑,安装Tomcat,部署Jenkins,构建的任务 Build periodically;
  3. Jenkins的Job定时构建后,随机 <= 15分钟,启动脚本;
  4. 启动app;快捷打卡;

【下班】

  1. 执行bat文件,创建本机的任务;
  2. 任务的执行时间为 触发bat文件的半小时后;
  3. 任务执行,跑app脚本,定位元素,下班打卡;

com.kuaishou.nebula

代码

为了减少麻烦,我把部分值做了替换

from appium import webdriver
from time import sleep
import random


class KuaiShou(object):

    def desired(self):
        desired_caps = dict()
        desired_caps['platformName'] = 'zyooooxie'
        desired_caps['platformVersion'] = 'zyooooxie'
        desired_caps['deviceName'] = 'zyooooxie'
        desired_caps['appPackage'] = 'com.kuaishou.nebula'
        desired_caps['appActivity'] = 'zyooooxie'
        desired_caps['noReset'] = True
        desired_caps['newCommandTimeout'] = 600

        driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        driver.implicitly_wait(10)
        return driver

    def start_app_slip(self):
        dr = self.desired()
        # print(dr.get_window_size())

        while True:
            sleep(random.randint(25, 45))
            dr.swipe(500, 1900, 500, 400, 1000)

启动 appium server

这儿说的是 appium-desktop

在这里插入图片描述

com.tencent.wework

代码

为了减少麻烦,我换了个写法

class BasePage(object):

    def appium_desired(self, devices='phone'):
        desired_data = CommonFun.read_config(devices)

        desired_data = {d[0]: d[1] for d in desired_data}

        desired_caps = deepcopy(desired_data)
        desired_caps.update({'noReset': eval(desired_data['noReset'])})
        desired_caps.update({'unicodeKeyboard': eval(desired_data['unicodeKeyboard'])})
        desired_caps.update({'resetKeyboard': eval(desired_data['resetKeyboard'])})
        desired_caps.update({'newCommandTimeout': eval(desired_data['newCommandTimeout'])})

        desired_caps.pop('ip')
        desired_caps.pop('port')
        print(desired_caps)

        # desired_caps.update({'settings[waitForIdleTimeout]': 5000})

        driver = webdriver.Remote("http://{}:{}/wd/hub".format(desired_data['ip'], desired_data['port']), desired_caps)

        driver.implicitly_wait(15)
        return driver

pytest的conftest.py


@pytest.fixture(scope='function')
def driver():
    warnings.simplefilter('ignore', ResourceWarning)

    return_driver = BasePage().appium_desired(devices='phone')
    print('driver start...')

    yield return_driver

    return_driver.close_app()
    return_driver.quit()
    print('driver end...')

上班的用例,随便写点 即可 【主要是启动app】;
下班的用例,要定位元素,模拟人的"点点点";

page_go_off.py

from appium.webdriver.common.mobileby import MobileBy
from common_functions.base_method import BaseMethod


class PageGoOff(BaseMethod):

    gongzuotai = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("工作台")')

    daka = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("打卡")')

    xiabandaka = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().textContains("下班打卡").resourceId("com.tencent.wework:id/a5p")')


@allure.epic('app测试报告')
@allure.feature('模块:GoOff')
class TestGoOff(PageGoOff):

    @allure.title('下班')
    @allure.description('追求自由')
    def test_go_1(self, driver):
        # driver.find_element_by_android_uiautomator(self.gongzuotai[1]).click()

        self.find_element_and_wait(driver, *self.gongzuotai).click()
        self.find_element_and_wait(driver, *self.daka).click()
        abc = self.find_element_and_wait(driver, *self.xiabandaka)
        Log.info(abc.text)
        abc.click()
        sleep(5)
        Log.info('++++++++++++++++++++')

jenkins的Job、计划任务

在这里插入图片描述

在这里插入图片描述

实际写了,也没咋用;我本就有2个手机,“工作机” 装的企微,在跑下班脚本报错:死活找不到元素;

有些提醒:

  1. 手机 不可锁屏
  2. 手机别设置 自动关机
  3. 手机数据线 好用些

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值