Appium Appium 元素定位问题:无论通过 id 定位,还是 xpath/UIautomator 定位,均定位不到 “跳过” 元素,求指教

流年亦醉 · April 09, 2019 · Last by 海姆达尔 replied at April 17, 2019 · 1712 hits
# 代码如下:
from appium import webdriver
from time import sleep

desired_caps={}
desired_caps['platformName'] = 'Android'

# 模拟器设备
desired_caps['platformVersion'] = '7.1.2'
desired_caps['deviceName'] = '127.0.0.1:62026'

desired_caps['app'] = r'C:\Users\Andysong\Desktop\kaoyan3.1.0.apk'
desired_caps['appPackage'] = 'com.tal.kaoyan'
desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(5)
sleep(3)

driver.find_element_by_id('android:id/button2').click()
sleep(5)

driver.find_element_by_id('com.tal.kaoyan:id/tv_skip').click()
# driver.find_element_by_xpath('//android.widget.TextView[@text="跳过 > "]').click()
# driver.find_element_by_xpath('//*[@class="android.widget.TextView" and @index="2"]').click()
# driver.find_element_by_android_uiautomator\
# ('new UiSelector().resourceId("com.tal.kaoyan:id/tv_skip")').click()

本人遇到的问题截图






共收到 19 条回复 时间 点赞

你把uiautomatorviewer的图也放出来下

雨夜狂奔 回复

该图已传哈

有没可能你找元素的时候这个元素还没加载出来,xpath没仔细看,感觉用id找应该是没问题的,你加下延迟时间试试呢,还有你这个写的不对

driver.find_element_by_xpath('//android.widget.TextView[@test="跳过 > "]').click()
# 应该是@text
雨夜狂奔 回复

嗯 已改正。这次特意给了sleep的时间加载,还是不行。附了加上sleep的两张图

流年亦醉 回复

你加了sleep时间之后直接用id找吧,或者把页面的page_source打印出来看看是不是有,这种应该比较容易找到啊。。

雨夜狂奔 回复

是的,直接用id找,脚本执行到定位“跳过”元素时,就一直停留不走了,反正定位不到,每次都手动强制停止,很诡异😂
不过谢谢你的回答哈

把页面page_source打印出来,然后看clickable是否是可点击的

xiakexing 回复

好的,有时间看下。谢了哈

appium log里 显示执行点击操作了吗,以及返回的状态是什么

小白 回复

脚本没有执行到点击操作,这个“跳过”元素一直定位不到(上一步的“取消更新”元素都是可以正常定位并正常点击操作的。)

流年亦醉 回复

我之前碰到一个是因为id 前的包名不一致,但是你这个一致,也别卡着了,先预算下坐标,点坐标吧,有时间再好好排查下

腾讯课堂appium实操课程即将开课,https://ke.qq.com/course/394620 从这链接进去,点击邀请助力,分享到朋友圈让朋友帮忙助力下就可以免费获取98元的实战课程啦。欢迎参与哦

小白 回复

嗯 说的在理。

看楼主android版本为7.1.2,但是你automationName没指定,所以为appium默认的appium参数,使用appium的是对android7的版本控件不识别的哈,加上这个试试 'automationName': 'uiautomator2',

文贤平 回复

加上了 运行报这个错:selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Cannot create property 'replace' on boolean 'true'

文贤平 回复

5.1.1的模拟器是正常执行脚本的,暂时先用5.1.1版本的了,谢了哈

发现你的注册appium参数,怀疑你写错

我怀疑你打印page_source的时候是发现是一个installer的系统界面,并不是我们看到的这个界面
所以发现不了当前的元素

app是不是target 26以上

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up