Skip to content

Appium 使用笔记

环境安装

  • 安装Python 3.8.4
  • 安装JDK 1.8.0_131
  • 安装 Android SDK
  • 安装夜神模拟器
  • 安装 appium : appium-desktop-setup-1.6.3

下载和安装 appium-desktop:

下载地址:https://github.com/appium/appium-desktop/releases

  • 安装 appium 的 python 客户端 Appium-Python-Client

配置 APP 信息

输入必要参数,点击连接,以微信为例:

添加以下四项值,完后点击“Start Session”。

  • platformName---设备平台,Android或IOS
  • deviceName----设备名。按上边adb devices -l 查出的设备名modle填写即可
  • appPackage----要启动的app的包名,是App开发者提供的名称。微信是"com.tencent.mm"
  • appActivity----要启动的界面,是App提供的各种不同的功能。每个程序都有个MainActivity,就是打开程序时显示在屏幕的活动。微信启动界面是".ui.LauncherUI"

appPackage和appActivity获取:

首先在android手机或模拟器上打开App,输入下面的abd命令:

sh
adb shell dumpsys window windows | findstr mFocusedApp

# 正在运行应用包名
adb shell dumpsys window | findstr mCurrentFocus

注意:要先在模拟器里打开APP,否则看不到相关信息

python 代码

  • 登录微信的操作
sh
pip install Appium-Python-Client Selenium
py
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# appium服务监听地址
server='http://localhost:4723/wd/hub'
# app启动参数
desired_caps={
  "platformName": "Android",
  "deviceName": "SM_N976N",
  "appPackage": "com.tencent.mm",
  "appActivity": ".ui.LauncherUI",
  'connectTimeout': 10
}

# 驱动
driver = webdriver.Remote(server,desired_caps)
wait = WebDriverWait(driver,10)
# 点击启动页
qidongye = wait.until(EC.presence_of_element_located((By.ID,"android:id/content")))
qidongye.click()
# 获取登录按钮
login_btn = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/j_9")))
# 点击登录按钮
login_btn.click()
# # 获取手机号文本框
phone_text = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/cd7")))
# # 填写手机号文本框
phone_text.send_keys("1234")
  • 打开 豆果美食
py
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'
# desired_caps['platformVersion'] = '8.0'
desired_caps['deviceName'] = '127.0.0.1:5555'
desired_caps['appPackage'] = 'com.douguo.recipe'
desired_caps['appActivity'] = 'com.douguo.recipe.MainActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

参考

问题

解决:python+appium报错ValueError: Timeout value connect was <...>, but it must be an int, float or None.

最直接的解决方案就是selenium版本降级:

pip install --force-reinstall -v "selenium==4.8.0"

参考:https://blog.csdn.net/qq_48302722/article/details/130861992