通过USB和wifi连接真机&编写第一个脚本

时间:2022-04-03 13:05:23

一、通过USB和wifi连接真机

1. 数据线连接手机并允许调试 cmd命令行执行:adb devices (能查看到设备就可以进行编写自动化脚本步骤了,如果在USB接触不良的情况下,可以执行下面步骤进行无线连接设备)

List of devices attached
axxxxx20        device

2. 执行以下命令分配ip port(5558未被占用):adb -s axxxxx20 tcpip 5558  
restarting in TCP mode port: 5558

3. 执行使用端口连接手机(192.168.xx.xx手机的ip地址):adb connect 192.168.xx.xx:5558
connected to 192.168.xx.xx:5558

4. 拔掉数据线,查看已用wifi连接的设备:adb devices
List of devices attached
192.168.xx.xx:5558    device

二、编写第一个脚本

1、获取appPackage & appActivity

在CMD命令行输入adb shell  进入adb命令行模式

通过USB和wifi连接真机&编写第一个脚本

在adb命令行输入:logcat | grep ActivityManager   ;在启动应用,找到关键字Displayed,关键字后面即为appPackage + appActivity

通过USB和wifi连接真机&编写第一个脚本

2、启动appium-desktop定位元素

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

通过USB和wifi连接真机&编写第一个脚本

通过USB和wifi连接真机&编写第一个脚本

定位元素

通过USB和wifi连接真机&编写第一个脚本

定位元素后,点击Tap模拟手动点击按钮

通过USB和wifi连接真机&编写第一个脚本

在安卓7.0及以上版本,左侧图无法refresh,需要增加  desired_caps['automationName'] = 'UIAutomator2'

通过USB和wifi连接真机&编写第一个脚本

3、编写脚本

# coding=utf-8

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' # localhost为本机;4723为端口;/wd/hub可以看成是规定的默认地址
# app启动参数
desired_caps = {
"platformName": "Android", # platformName:使用哪个移动操作系统平台;iOS,Android或FirefoxOS
"deviceName": "dfc147f8", # deviceName:使用的移动设备或模拟器的种类
"appPackage": "com.cdsg.zgph", # appPackage:你想运行的Android应用程序的Java包(仅限Android使用)
"appActivity": ".activity.MainActivity" # 要从包中启动的Android活动的活动名称。(仅限Android使用)
}
# 驱动
driver = webdriver.Remote(server, desired_caps)
wait = WebDriverWait(driver, 30)
# 获取权限同意按钮
permission_btn = wait.until(EC.presence_of_element_located((By.ID, "com.android.packageinstaller:id/permission_allow_button")))
# 点击权限同意按钮
permission_btn.click()