zoukankan      html  css  js  c++  java
  • Python3+Appium基于安卓平台的app自动化

    一、环境搭建

    电脑端(Windows系统):

     1、安装Appium-Python-Client包,直接cmd窗口输入pip3 install Appium-Python-Client

     2、确保安装匹配版本的selenium和appium,使用命令pip install selenium -U

     3、安装Appium-windows,下载地址:http://appium.io/

     4、安装jdk,使用命令java -version检查jdk是否安装成功

     5、安装androidsdk,下载地址:

    链接:https://pan.baidu.com/s/1xHDZU5nyLKb8aVtOwGr9zg
    提取码:qgdq

    • 把下载好的androidsdk.zip压缩包解压。

     

    •  配置环境变量。

     

    • 新建一个ANDROID_HOME系统变量,变量值为上一步的路径。

    • 在path路径追加platform-tools路径

    • 打开cmd窗口输入adb,出现下图所示表示配置成功

    手机端:

    真机有线:

    1、用usb线连接到电脑,一头连手机,一头连电脑,usb连接方式选择传输文件

    2、进入手机设置,找到版本号,不断点击版本号,直到提示已处于开发者模式

    3、搜索开发者模式,在开发者模式中,启动usb调试 ,确认授权电脑端调试,这样appium才能驱动手机

    4、在电脑上执行adb devices命令,查看连接的设备,不显示设备的话在电脑和手机上安装手机助手再查看

     真机无线(adb无线连接功能)

    1、先以usb有线连接方式连接到计算机

    2、激活手机adb的无线服务(确保手机和电脑处于同一局域网)

    在cmd命令行输入adb tcpip 5555

    3、计算机以无线方式连接到手机

    在cmd命令行输入adb connect  手机ip

    4、连接成功后就可以拔掉有线了

     安卓模拟器

    1、下载模拟器并安装

    下载一款安卓模拟器,夜神模拟器下载地址:https://www.yeshen.com/

    2、打开模拟器应用

    在开发者模式中打开usb调试

    3、连接模拟器

    在cmd命令行输入adb connect 127.0.0.1:62001

    二、元素定位工具

    1、Appium-windows自带的

    • 点击启动appium

    • 点击第1个图标

    • 填写设备信息(需要与被测app保持会话才能定位元素),点击Start Session

    2、weditor

    • 安装

      pip3 install weditor

    • 启动

      python -m  weditor

    • 运行

      在弹出的浏览器(默认浏览器最好不要设置为IE,一般选择谷歌或火狐)页面点击上面的Connect按钮,元素定位工具会自动连接手机,并在上面安装ATX程序(远程服务),没有自动安装的话,执行:pip3 install --pre --upgrade uiautomator2,python -m uiautomator2 init,接下来就可以查看元素了,刷新页面可以点击Dump Hierarchy按钮,也可以将右侧按钮设置成实时状态,这样不需要每次手动刷新页面了。

    注意:

    运行代码时,需要在ATX程序点击停止UIAUTOMATOR

     

    3、androidsdk中的uiautomatorviewer

    • 点击uiautomatorviewer.bat打开

    • 点击第2个图标,打开设备后就可以进行元素定位了

     三、上代码

    ""
    自动化BOSSAPP
    选择第一个搜索结果,点击进入详情,
    获取职位名称下面的信息:地区、工作年限、学历
    """
    from appium import webdriver
    
    # 自动化环境配置信息
    desired_caps = {
        # 移动设备平台
        'platformName': 'Android',
        # 平台OS版本号,写整数位即可
        'plathformVersion': '10',
        # 设备的名称--值可以随便写
        'deviceName': 'test0106',
        # 提供被测app的信息-包名,入口信息:
        # 1.打开被测app,2.命令行输入以下信息
        # adb shell dumpsys activity recents | findstr intent={
        'appPackage': 'com.hpbr.bosszhipin',
        'appActivity': '.module.launcher.WelcomeActivity',
        # 确保自动化之后不重置app
        'noReset': True,
        # 设置session的超时时间,单位秒,默认60s
        'newCommandTimeout': 6000,
        # 设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator2
        'automationName': 'UiAutomator2',  # 或者UiAutomator1
        'skipServerInstallation': True  # 跳过UI2的安装,如果第一次运行程序,不要添加该配置
    }
    
    # 创建驱动
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    
    driver.implicitly_wait(10)   # 隐式等待
    
    # 1.点击放大镜
    ele = driver.find_elements_by_id('com.hpbr.bosszhipin:id/img_icon')[1]
    ele.click()
    
    # 2.在搜索框输入自动化测试
    driver.find_element_by_id('com.hpbr.bosszhipin:id/et_search').send_keys('自动化测试')
    
    # 3.点击第一个搜索结果
    driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_filtered_name').click()
    
    # 4.获取当前页面所有职位信息元素
    job_msg = driver.find_elements_by_id('com.hpbr.bosszhipin:id/view_job_card')
    for job in job_msg:
        # 输出岗位名称
        name = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_position_name').text
        # 输出薪资
        salray = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_salary_statue').text
        # 输出公司名称
        company = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_company_name').text
        # 5.点击进入详情
        job.click()
        # 6.获取职位名称下面的信息:地区、工作年限、学历
        address = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_location').text
        work_years = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_work_exp').text
        education = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_degree').text
        print(f'{name}|{salray}|{company}|{address}|{work_years}|{education}')
        driver.find_element_by_id('com.hpbr.bosszhipin:id/iv_back').click()  # 回退到职位信息列表
    
    driver.quit()
  • 相关阅读:
    171 01 Android 零基础入门 03 Java常用工具类02 Java包装类 01 包装类简介 01 Java包装类内容简介
    170 01 Android 零基础入门 03 Java常用工具类01 Java异常 08 Java异常总结 01 异常总结
    169 01 Android 零基础入门 03 Java常用工具类01 Java异常 07 异常链 01 异常链简介
    168 01 Android 零基础入门 03 Java常用工具类01 Java异常 06 自定义异常 01 自定义异常类
    167 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 02 使用throw抛出异常对象
    166 01 Android 零基础入门 03 Java常用工具类01 Java异常 05 使用throw和throws实现异常处理 01 使用throws声明异常类型
    165 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 05 return关键字在异常处理中的使用
    DevExpress WPF v20.2版本亮点放送:全新升级的PDF Viewer
    界面控件DevExpress使用教程:Dashboard – 自定义导出
    DevExpress WinForms帮助文档:表单控件
  • 原文地址:https://www.cnblogs.com/lengjf/p/13725552.html
Copyright © 2011-2022 走看看