飞书定时打卡----python

import time
import datetime
import uiautomator2 as u2
import argparse


def perform_operations(device_id):
    try:
        # 初始化设备
        d = u2.connect(device_id)

        # 启动应用
        d.app_start('com.ss.android.lark')

        # 点击指定元素
        d.xpath(
            '//*[@resource-id="com.ss.android.lark:id/recycler"]/android.view.ViewGroup[2]/android.widget.ImageView[1]').click()
        time.sleep(2)

        # 检查并点击目标元素
        if d.xpath('//*[@resource-id="_n_90"]').exists:
            d.xpath('//*[@resource-id="_n_90"]').click()
        else:
            d.xpath('//*[@resource-id="_n_150"]').click()
            d.click(0.683, 0.529)

    except Exception as e:
        print(f"操作失败: {e}")


def main(device_id, target_time):
    while True:
        time.sleep(0.1)  # 每 0.1 秒检测一次时间
        current_time = datetime.datetime.now().strftime('%H:%M:%S')
        print(f"当前时间: {current_time}")

        if current_time == target_time:
            print(f"达到目标时间 {target_time},开始执行操作...")
            perform_operations(device_id)
            break


if __name__ == '__main__':
    # 设置命令行参数解析
    parser = argparse.ArgumentParser(description="通过命令行传入设备 ID 和时间")
    parser.add_argument('--device', type=str, required=True, help='设备 ID')
    parser.add_argument('--time', type=str, required=True, help='目标时间(格式: HH:MM:SS)')
    args = parser.parse_args()

    # 从命令行获取设备 ID 和时间
    device_id = args.device
    target_time = args.time

    # 检查时间格式是否正确
    try:
        datetime.datetime.strptime(target_time, '%H:%M:%S')
    except ValueError:
        print("时间格式错误,请使用 HH:MM:SS 格式(例如 18:44:20)")
        exit(1)

    # 启动主程序
    print(f"设备 ID: {device_id}, 目标时间: {target_time}")
    main(device_id, target_time)
python script.py --device id --time 18:44:20

定时任务,当系统时间达到 某个时间 时,会通过 uiautomator2 库连接到设备并执行一系列操作

### 如何在 UniApp 中计算两个时间戳之间的差异 在 UniApp 应用程序中处理时间戳的差异主要依赖于 JavaScript 的内置 `Date` 对象。通过将时间戳转换为 `Date` 类型的对象,可以方便地执行加减运算来获得两者间的差距。 对于确保不同环境下的兼容性和准确性,在操作之前应当确认所使用的都是 Unix 时间戳(即自1970年1月1日以来经过的秒数),这有助于避免因单位不统一而导致的问题[^2]。 下面展示一段用于计算两个时间戳之间差别的代码片段: ```javascript function calculateTimeDifference(timestampA, timestampB) { // 将毫秒级的时间戳转换为秒级别 const timeA = Math.floor(parseInt(timestampA) / 1000); const timeB = Math.floor(parseInt(timestampB) / 1000); let differenceInSeconds = Math.abs(timeA - timeB); // 计算绝对值防止负数 return differenceInSeconds; } ``` 此函数接收两个参数作为输入——分别是待比较的时间戳 A 和 B,并返回它们相差多少秒的结果。注意这里的除法是为了从可能存在的毫秒精度调整至标准的Unix时间戳格式,也就是每秒钟表示一次增量的形式。 当涉及到跨平台开发时,比如使用 UniApp 这样的框架构建应用程序,保持前后端逻辑的一致性非常重要,尤其是在涉及时间和日期的操作方面。因此建议始终采用相同的方法来进行时间相关的计算,以减少潜在错误的发生几率[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值