启动顺序
-
安装Android-sdk
下载地址:Android-sdk
我下载的上面个,下载完成后解压,然后运行SDK Manager.exe
我是为了platform-tools下面弄个adb工具,方便后面抓app包信息,记得配置环境变量
-
启动appium
下载appium:官网地址http://appium.io/
下载exe文件后直接运行安装,完成后启动
-
然后进去配置app属性
可以直接把这些属性copy到右边json框
{
“deviceName”: “CLB7N18921000068”,
“platformName”: “Android”,
“platformVersion”: “10”,
“appPackage”: “com.tencent.mobileqq”,
“appActivity”: “.activity.SplashActivity”
}
-
deviceName:设备名称,连接手机后,在dos下执行adb devices
- platformName:Android,苹果的不行
- platformVersion:版本可以自己查手机里面
- appPackage:包名,我找了半天没找到我想要的包,这里qq的包到是好找。dos下执行adb shell pm list package -3,列出所有的第三方包。也可以先执行adb shell,然后执行pm list package -3
- appActivity:app的啥组件哦,我也不清楚,网上说的几种方式我没抓到:adb shell然后dumpsys window windows | grep -i Current。我用了另外的方法,adb logcat>d:/log.txt,打印日志,然后在手机上操作app,完成后,到log.txt里面去找Displayed,找到下面段内容就是了,.activity.SplashActivity,记得前面有个点
- python调用appium-python-client,定位元素操作app,直接附上代码了
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep
# server 启动参数
desired_caps = {
}
# 设备信息
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '10'
desired_caps['deviceName'] = 'CLB7N18921000068'
# app信息
desired_caps['appPackage'] = 'com.tencent.mobileqq'
desired_caps['appActivity'] = '.activity.SplashActivity'
# desired_caps['noReset'] = true
print('配置app属性完成', desired_caps)
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
print('启动服务')
WebDriverWait(driver, 40).until(lambda driver: driver.find_element_by_id("com.tencent.mobileqq:id/dialogRightBtn"))
driver.find_element_by_id("com.tencent.mobileqq:id/dialogRightBtn").click()
print('同意协议')
WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_id("com.tencent.mobileqq:id/btn_login"))
driver.find_element_by_id("com.tencent.mobileqq:id/btn_login").click()
print('点击登录')
WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_id("com.tencent.mobileqq:id/nlz"))
driver.find_element_by_id("com.tencent.mobileqq:id/nlz").click()
print('弹出一个绑定手机号的框,然后隐藏掉')
WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱"))
driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱").send_keys("503646110")
driver.find_element_by_accessibility_id("密码 安全").send_keys("11111111")
driver.find_element_by_id("com.tencent.mobileqq:id/login").click()
print('登录完成')
sleep(3)
driver.quit()