python+appium自动化测试

环境搭建

  1. 安装jdk: https://www.oracle.com/java/technologies/downloads/#java17
    • 配置环境变量JAVA_HOME为jdk路径
  2. 安装android_sdk: https://developer.android.com/studio?hl=zh-cn
    • 下载android_studio,在SDK_Manager安装sdk
    • 配置环境变量ANDROID_HOME为sdk安装路径
    • 将platform-tools路径添加的系统环境变量
  3. 安装appium-desktop:https://github.com/appium/appium-desktop/releases
  4. 安装appium-inspector:https://github.com/appium/appium-inspector/releases
  5. 安装appium的python客户端:pip install appium-python-client==2.11.1
  6. 安装夜神模拟器,替换platform-tools下的adb.exe为模拟器的adb.exe

adb命令

  • 重启adb服务:

    adb kill-server
    adb start-server
    
  • 查看连接的设备

    adb devices
    
  • 获取系统版本号

    adb shell getprop ro.build.version.release
    
  • 获取appPackage和appActivity(包名界面名)

    adb shell dumpsys window windows | findstr mFocusedApp
    
  • 文件交互

    # 删除文件
    adb shell rm -r /sdcard/Pictures/*
    # push文件
    adb push {path} /sdcard/Pictures/
    # pull文件
    adb pull "/sdcard/DCIM/YouCam Perfect/" {path}
    

常用操作介绍

连接设备
from appium import webdriver
from appium.options.common import AppiumOptions

desired_caps = dict(
        deviceName="127.0.0.1:62001",
        platformName="Android",
    	appPackage="com.cyberlink.youperfect",
        appActivity=".ui.launcher.LauncherActivity",
    )
options = AppiumOptions().load_capabilities(desired_caps)
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", options=options)
time.sleep(5)
driver.quit()
driver操作
# 安装应用
driver.install_app(r"C:\Users\Administrator\Desktop\apk\玩美相机.apk")
# 卸载应用
driver.remove_app('com.cyberlink.youperfect')
# 判断应用是否安装
print(driver.is_app_installed('com.cyberlink.youperfect'))
# 获取当前操作应用包名
print(driver.current_package)
# 获取当前操作应用界面名
print(driver.current_activity)
# 获取当前界面的xml源码
print(driver.page_source)
# 获取当前手机的时间
print(driver.device_time)  
# 打开手机通知栏
driver.open_notifications()
# - 获取当前手机的分辨率
print(driver.get_window_size())
# 获取当前手机的网络状态
print(driver.network_connection)
# 设置手机网络状态
driver.set_network_connection(2)
# 截图
driver.save_screenshot("jietu.png")
元素定位
# xpath定位
driver.find_element(By.XPATH, "//*[@text='同意并继续']").click()
# id定位
driver.find_element(By.ID, "com.cyberlink.youperfect:id/agree_check_box").click()
# class_name定位
driver.find_elements(By.CLASS_NAME, 'android.widget.ImageButton')[0].click()
# 坐标定位点击
driver.tap([(150, 290)], duration=100)
元素属性
el = driver.find_element(By.XPATH, "//*[@text='同意并继续']")
# 获取元素的文本内容
print(el.text)  
# 获取元素的属性值
print(el.get_attribute("class"))
# 获取元素的坐标值
print(el.location) 
# 获取元素的宽高(大小)
print(el.size)
# 对元素进行点击操作
el.click()
# 对元素进行输入操作
el.send_keys("xxx")
滚动和事件链
# 通过元素的相对位置进行滚动
el1 = driver.find_element(By.XPATH, '//*[@text="蓝牙"]')
el2 = driver.find_element(By.XPATH, '//*[@text="应用"]')
driver.scroll(el2, el1)
# 通过坐标进行滚动操作
driver.swipe(144, 1759, 144, 799)
# 创建事件链对象
action = TouchAction(driver)
# press:按下
# wait:按下时间,单位毫秒
# move_to 移动
# release 松手
# 事件链完成之后要进行提交
# perform()
time.sleep(1)
action.press(x=210, y=900).wait(100) \
    .move_to(x=540, y=900).wait(100) \
    .move_to(x=867, y=900).wait(100) \
    .move_to(x=540, y=1234).wait(100) \
    .move_to(x=210, y=1560).wait(100) \
    .move_to(x=539, y=1560).wait(100) \
    .move_to(x=867, y=1560).wait(100)
# 之前按下操作,完成之后,需要松手
action.release()
# 提交事件链
action.perform()
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值