项目场景:
程序控制链接考研帮APP
python 3.8
appium 1.15.1
夜神模拟器 7.0.1.0
考研帮.apk
实现代码如下:
from appium import webdriver
import time
desired_caps={}
desired_caps['platformName']='Android'#系统
desired_caps['platformVersion']='7.1.2'#版本,在夜神模拟机中查看
desired_caps['deviceName']='127.0.0.1:62001'#虽然这里的端口号是62001,但是链接Appium的时候是写4723
#软件包名字的获取:管理员打开终端,输入aapt dump badging "F:\kaoyanbang.apk"查看
#安装包名称是中文时,会报错,改为英文正常读取
#package:
# name='com.tal.kaoyan'
# versionCode='132'
# versionName='3.8.2beta'
# compileSdkVersion='29'
# compileSdkVersionCodename='10'
desired_caps['appPackage']='com.tal.kaoyan'
#另找到如下数据:
#launchable-activity: name='com.tal.kaoyan.ui.activity.SplashActivity' label='' icon=''
desired_caps['appActivity']='com.tal.kaoyan.ui.activity.SplashActivity'#因为首次启动,activity名称很长
#开始连接
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#开始定位
driver.find_element_by_id('com.tal.kaoyan:id/tip_commit').click()#点击同意协议
driver.find_element_by_id('com.tal.kaoyan:id/tv_ok').click()#点击‘我知道了’
driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click()#点击‘跳过’
问题描述:
appium报错找不到定位元素:
[W3C] Matched W3C error code 'no such element' to NoSuchElementError
[W3C (0bb6cd5f)] Encountered internal error running command: NoSuchElementError: An element could not be located on the page using the given search parameters.
[W3C (0bb6cd5f)] at AndroidUiautomator2Driver.findElOrEls (C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-android-driver\lib\commands\find.js:75:11)
[HTTP] <-- POST /wd/hub/session/0bb6cd5f-4086-418f-a307-18ecb7a30450/element 404 1163 ms - 421
[HTTP]
原因分析:
怀疑是程序读取太快,夜神模拟器反应慢
解决方案:
加上延时,解决。
#开始定位
time.sleep(2)
driver.find_element_by_id('com.tal.kaoyan:id/tip_commit').click()#点击同意协议
time.sleep(2)
driver.find_element_by_id('com.tal.kaoyan:id/tv_ok').click()#点击‘我知道了’
time.sleep(2)
driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click()#点击‘跳过’
appium日志如下:
[W3C (5f8d3926)] Calling AppiumDriver.click() with args: ["54eec99f-d257-444d-89b3-fb6f6a1e2ff7","5f8d3926-a608-4ba3-a6e6-ac2dfc7d408c"]
[WD Proxy] Matched '/element/54eec99f-d257-444d-89b3-fb6f6a1e2ff7/click' to command name 'click'
[WD Proxy] Proxying [POST /element/54eec99f-d257-444d-89b3-fb6f6a1e2ff7/click] to [POST http://localhost:8202/wd/hub/session/2acccb73-c952-4221-a30a-d5554129883a/element/54eec99f-d257-444d-89b3-fb6f6a1e2ff7/click] with body: {"element":"54eec99f-d257-444d-89b3-fb6f6a1e2ff7"}
[WD Proxy] Got response with status 200: {"sessionId":"2acccb73-c952-4221-a30a-d5554129883a","value":null}
[W3C (5f8d3926)] Responding to client with driver.click() result: null
[HTTP] <-- POST /wd/hub/session/5f8d3926-a608-4ba3-a6e6-ac2dfc7d408c/element/54eec99f-d257-444d-89b3-fb6f6a1e2ff7/click 200 11 ms - 14
[HTTP]