【Appium+python实战】大麦抢票APP自动化实战(附带源码)

先看实现效果!

本文要点

 

使用Python实现Android自动化测试

基于uiautomator2+Appium的MuMu模拟器自动化测试实战

MuMu模拟器环境配置要点

uiautomator2与Appium框架联合使用技

 

一、环境准备

  • MuMu模拟器12(Android 12)
  • Python 3.8+
  • Appium Server 
  • Android SDK Platform-Tools
  • node.js
  • ADB

1.1实现步骤
cd切换到Android sdk路径
 

cd D:\SDK\platform-tools

 

连接MuMu模拟器

  • adb connect 127.0.0.1:输入你自己的调试号
    adb devices
    

    二、 初始化atx-agent

  • import uiautomator2 as u2
    
    # 初始化设备连接
    d = u2.connect("")
    
    # 自动安装守护进程
    d.healthcheck()  
    

    三、使用uiautomator2实现元素分析

    import uiautomator2 as u2
    import csv
    import os
    from datetime import datetime
    import xml.etree.ElementTree as ET
    
    # 连接到MuMu模拟器
    d = u2.connect("")
    
    # 打印当前页面所有元素
    hierarchy = d.dump_hierarchy()
    print(hierarchy)

    四、自动化实现
     

    import time
    from appium import webdriver
    from appium.webdriver.common.appiumby import AppiumBy
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from appium.options.android import UiAutomator2Options
    
    appium_server_url = ''
    
    # 根据需求修正后的配置参数
    options = UiAutomator2Options()
    options.platform_name = 'Android'
    options.platform_version = ''
    options.device_name = 'emulator-5554'
    options.automation_name = 'UiAutomator2'
    options.app_package = ''  # 修正为目标APP包名
    options.app_activity = ''  # 
    options.no_reset = True
    options.auto_grant_permissions = True  # 自动处理权限弹窗
    
    # 初始化驱动
    driver = webdriver.Remote(appium_server_url, options=options)
    wait = WebDriverWait(driver, 20)
    
    
    def validate_element(locator, description):
        """带验证的增强元素定位"""
        element = wait.until(EC.presence_of_element_located(locator))
        print(f"√ 成功定位到 {description}")
        return element
    
    
    try:
        print(">>> 正在启动大麦APP...")
    
        # 处理启动页(如有)
        time.sleep(5)  # 等待应用初始化
    
        # 步骤1:点击搜索按钮
        search_btn = validate_element(
            (AppiumBy.ID, 'cn.damai:id/homepage_header_search_btn'),
            "首页搜索按钮"
        )
        search_btn.click()
        print("已点击搜索入口")
    
        # 步骤2:定位输入框
        time.sleep(2)  # 等待搜索页加载
        input_field = validate_element(
            (AppiumBy.ID, 'cn.damai:id/header_search_v2_input'),
            "搜索输入框"
        )
    
        # 步骤3:输入关键词
        input_field.send_keys("时代少年团")
        print("已输入搜索关键词")
    
        # 输入后验证文本
        if input_field.text != "时代少年团":
            print("警告:输入内容可能未正确显示,尝试重新输入")
            input_field.clear()
            input_field.send_keys("时代少年团")
    
        # 步骤4:提交搜索
        driver.press_keycode(66)  # 回车键
        print("已发送回车指令")
    
        # 验证搜索结果
        try:
            result = wait.until(EC.presence_of_element_located(
                (AppiumBy.XPATH, '//*[contains(@text, "时代少年团")]')
            ))
            print(f"验证成功:找到包含关键词的条目 - {result.text[:15]}...")
        except:
            print("警告:未找到明确的结果标识,继续执行")
    
    except Exception as e:
        driver.save_screenshot('damai_error.png')
        print(f"!!! 执行异常: {str(e)}")
        print("当前页面结构快照:")
        print(driver.page_source[:1000])  # 截取部分页面源码
    
    finally:
        # 关闭会话
        time.sleep(3)
        driver.quit()
        print(">>> 测试会话已终止 <<<")
    


    五、总结

  • 在前期环境准备踩了很多坑,还有一些sdk没有自带定位器选择的工具,所以就自行打印保存到csv里面,也可以方便后面用到的时候直接拿来用,resourceid的话一般是不会变的,因为自己做过一个Android系统,所以对这些appium连接模拟器有一点了解,大概三小时就成功就跑通了一个demon,以后会考虑深入了解,配合UI自动化和接口自动化,实现一些功能的串联操作。

 

Appium是一个开源的自动化测试框架,主要用于移动应用的UI测试,支持多种平台包括iOS和Android。然而,“大麦”通常是指利用技术手段快速在大麦网或其他电影务平台上获取热门电影的电子。如果要用Appium来进行大麦,你需要按照以下步骤操作: 1. **设置环境**:首先确保安装了Appium服务器和对应的驱动程序,比如iOS需要Xcode和Simulator,Android需要Android SDK和模拟器。 2. **编写测试脚本**:使用Appium提供的WebDriver协议(如Python的`appium-python-client`库),编写一个自动化脚本来控制手机或模拟器的行为,如点击“”按钮、输入验证码等。 3. **定位元素**:通过XPath、CSS选择器或JSON Wire Protocol找到购页面上的关键元素,例如登录框、验证码区域和提交按钮。 4. **模拟用户交互**:模拟用户的点击、输入和滚动等操作,模拟用户手动的过程。 5. **速度优化**:可能需要配合一些网络请求库(如Selenium-Grid或Protractor)来提高并发处理能力,或者使用异步编程避免阻塞。 6. **监控与日志**:运行过程中记录详细的日志信息,以便调试和优化策略。 请注意,大麦可能会有严格的反爬虫策略,比如IP限制、验证码检测,因此在实际操作中可能需要不断调整和规避这些机制。此外,频繁的自动购操作可能会违反网站的服务条款,所以在进行这类项目之前,务必了解并尊重相关规定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值