奇技淫巧抢国补

部署运行你感兴趣的模型镜像

在这里插入图片描述

与你聊天的可能根本就不是人中介绍了下appium的安装和使用。最近打算买手机,而国家补贴时间属实有点短。于是就想着写个脚本试试吧。

雷电模拟器

个人比较喜欢的一款模拟器,还有很多,比如MuMu等等吧。目前感觉雷电是连接是最省事的模拟器了。还有它的多开功能也很方便,只要电脑配置足够,可以同时打开很多个模拟器。更多的参见官网吧。

双开抢国补

本人代开两个模拟器,打开l连个appium server

appium server -p 4723
appium server -p 4724

接下是完整的代码,

import json
import unittest
from datetime import time, datetime
from time import sleep
from concurrent.futures import ThreadPoolExecutor, as_completed

from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy



capabilities = dict(
    platformName='Android',
    automationName='uiautomator2',
    deviceName='Android',
    # udid="emulator-5556"
)

bind_cap = {"emulator-5554":'http://localhost:4724', "emulator-5556":'http://localhost:4725'}



def run_test_for_device(udid, server_url, activate=False):
    """为单个设备执行测试动作"""
    # 复制基础配置,添加当前设备的 udid
    device_cap = capabilities.copy()
    device_cap['udid'] = udid  # 动态添加 udid
    appium_server_url = server_url
    driver = None
    try:
        # 初始化driver
        driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(device_cap))
        # 执行点击操作
        # 点击固定坐标(1796, 593)
        if activate:
            driver.tap([(1193, 77)])
            # 刷新当前页面
            # driver.refresh()
        else:
            # driver.tap([(194, 1042)])
            # sleep(2)
            butie = driver.find_element(by=AppiumBy.XPATH, value='//android.view.View[@text="智能手表手环"]')
            butie.click()
            # sleep(2)
            # driver.tap([(1796, 593)])
            # 等待1秒
            sleep(1)

            # 查找并点击"同意"按钮
            # 假设"同意"按钮在一个黄色框内,尝试通过文本查找
            agree_button = driver.find_element(by=AppiumBy.XPATH, value='//android.view.View[@text="同意"]')
            agree_button.click()

        
        print(f"设备 {udid} 测试动作执行完成")
        return f"设备 {udid} 执行成功"
        
    except Exception as e:
        print(f"设备 {udid} 执行过程中出现错误: {e}")
        return f"设备 {udid} 执行失败: {e}"
    finally:
        # 清理资源
        if driver:
            driver.quit()

def run_test_action(activate=False):
    """并发执行测试动作的核心函数"""
    print("开始并发执行测试...")
    
    # 使用线程池并发执行
    with ThreadPoolExecutor(max_workers=len(bind_cap)) as executor:
        # 提交所有设备的测试任务
        future_to_device = {
            executor.submit(run_test_for_device, udid, server_url, activate): udid 
            for udid, server_url in bind_cap.items()
        }
        
        # 等待所有任务完成并收集结果
        results = []
        for future in as_completed(future_to_device):
            udid = future_to_device[future]
            try:
                result = future.result()
                results.append(result)
                print(f"设备 {udid} 任务完成: {result}")
            except Exception as e:
                error_msg = f"设备 {udid} 任务执行异常: {e}"
                results.append(error_msg)
                print(error_msg)
        
        print("所有设备测试执行完成")
        return results


def main():
    """主函数"""
    print("程序开始运行...")
    while True:
        # 获取当前时间
        now = datetime.now()
        # 如果当前时间是早上8点59分到9点5分之间,则执行测试
        if (now.hour == 9 and now.minute >= 0 and now.minute <= 5):
            print(f"当前时间是 {now.strftime('%H:%M')},开始执行测试...")
            run_test_action()
            # 等待一段时间避免过于频繁执行
            sleep(1)  # 等待2秒
        else:
            print(now.hour, now.minute)
            print(f"当前时间是 {now.strftime('%H:%M')},不在指定时间范围(9:00-9:05),等待下一次检查...")
            # if (now.hour == 8 and now.minute == 59):
            #     print("8:59")
            #     sleep(1) 
            # else:
            run_test_action(False)
            sleep(5)  # 等待1分钟再检查


if __name__ == '__main__':
    main()

在这里插入图片描述

如果需要添加更多设置,多开几个server和模拟器即可,修改上面的bind_cap = {“emulator-5554”:‘http://localhost:4724’, “emulator-5556”:‘http://localhost:4725’}即可。

写在最后

尽管使用这奇技淫巧,依然还是没有抢到。不会是内定的吧。每天试试吧,也不知道哪一次就成功了呀。

更多内容,欢迎关注我的微信公众号: 半夏之夜的无情剑客。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloworddm

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值