[自动化测试]python+appium+安卓端真机

一. Adb命令

adb-安卓调试桥,用于完成电脑和手机之间的通信控制

手机中的每个页面都是一个activity


  • ①常用的命令:
    • adb devices -l:查看连接设备名称deviceName
    • adb shell getprop ro.build.version.release:查看版本号platformVersion
    • adb devices:查看设备是否连接
    • adb push  【电脑上的文件路径】[手机上的文件路径] :将文件从电脑传到手机
      • 如:/storage/emulated/0/Download/
    • adb pull [手机上的文件路径]  【电脑上的文件路径】:将文件从手机传到电脑
      • ​​​​​​​如:adb pull /storage/emulated/0/DCIM/Screenshots/111.jpg C:\Users\28449\Downloads
    • exit :退出shell
    • adb uninstall 安卓系统的包名:删除文件
    • adb install apk包路径:安卓apk的包
    • adb shell:进入安卓系统,操作安卓,基本linux命令都可以使用
    • adb logcat > D:\\1.txt:可以保存日志到txt文件
    • 获取应用的activity:
      • aapt dump badging “apk的路径 ”:查看包名appPackage&启动页appActivity
        • 前置条件:
          • 进入“D:\software\IDE\Android\android-sdk\build-tools\29.0.3
          • 以上链接修改成自己的
          • 并且有sdk
      • adb shell dumpsys activity|findstr "mFocuse":获取当前页面的activity
      • adb shell monkey -p 【被测包名】 -v -v -v 1:通过日志信息中,找到using开头的那一句,其中的activity就是穷页面
  • ②包管理(pm)命令:
    • adb shell pm list package -3:查看第三方安卓的包名,列表形式,-3第三方参数

二、基本Linux命令

  1. cd:进入文件目录
  2. ls:查看文件列表
  3. cat:查看文件内容
  4. rm:删除文件
  5. pm list package -3:查看第三方安卓的包名,列表形式,-3第三方参数

三、基本操作


捕捉元素

1. XPATH

2. CLASS_NAME

3.ACCESSIBILITY_ID

driver.find_element(AppiumBy.CLASS_NAME,'android.widget.CheckBox').click()
driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@resource-id="com.runcam.android.runcambf:id/AgreeBtn"]').click()
driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'My').click()

 时间等待

1. 显式等待:  
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from appium.webdriver.common.appiumby import AppiumBy
try:
    # 等待元素出现
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((AppiumBy.XPATH, '//XCUIElementTypeImage[@name="我的"]'))
    )
    element.click()
except Exception as e:
    print("Element was not found within the given time.")
    print(e)
2. 强制等待:time.sleep(2)

滑动 

通过xy轴进行滑动:
driver.swipe(start_x=214, start_y=500, end_x=214, end_y=300,duration=100)

 获取屏幕尺寸并进行点击

size=get_screen_ratio(driver)
x=int(size['width']*0.4033)
y=int(size['height']*0.9029)
driver.tap([(x, y)],None)

四、遇到的问题


1. AttributeError: ‘NoneType‘ object has no attribute ‘to_capabilities‘
          

卸载selenium和appium, pip uninstall selenium, appium-python-client,

降低指定appium版本进行安装:pip install appium-python-client==2.0

2. 运行无输出信息,运行完成才产生

 需要使用main方法调用unittest

if __name__ == '__main__':
    report(RECEIVERPAGE)

3. unittest无法运行main:

 参考链接:     https://www.cnblogs.com/youreyebows/p/7867508.html

五、框架 &代码

1 Desired Capabilities默认设置

desired_caps = {
    "platformName": "Android",
    "appium:platformVersion": "14",
    "appium:deviceName": "V2055A",
    "appium:appPackage": "com.runcam.android.runcambf",
    "appium:appActivity": "com.runcam.android.runcambf.SplashActivity",
    "appium:resetKeyboard": True,
    "appium:ignoreHiddenApiPolicyError": True,
    "appium:ensureWebviewsHavePages": True,
    "appium:nativeWebScreenshot": True,
    "appium:newCommandTimeout": 3600,
    "appium:connectHardwareKeyboard": True
}

2 框架 


         

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值