appium+robotframework+python连接真机定位不到元素的问题处理

Posted bestwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium+robotframework+python连接真机定位不到元素的问题处理相关的知识,希望对你有一定的参考价值。

这几天遇到了一个比较奇怪的问题,使用RF框架进行自动化测试的时候定位不到部分元素

并且这个元素的是有id的,更换了xpath定位也行不通,冥思苦想,加上谷歌百度,终于解决了

解决步骤如下:

1、定位问题

首先编写个简单的test.py,用来进行debug

进入包含定位不到元素的页面,打印出pagesource

from appium import webdriver
from time import sleep

meizu = "platformName": "android", "platformVersion": "7.0", "deviceName": "891QSDU5Q57P9",
             "appPackage": "your_app_packagename", "appActivity": ".views.MainActivity"
driver = webdriver.Remote("http://localhost:4723/wd/hub", meizu)
ss=driver.find_element_by_id(com.android.packageinstaller:id/permission_allow_button)
for i   in range(4):
    sleep(3)
    ss.click()
#print(driver.page_source)
sleep(5)
s2=driver.find_element_by_id(‘button)
sleep(3)
s2.click()        #点击车辆页
# s4=driver.find_element_by_id(‘xxx‘)
# s4.click()        #点击我的页面
print(driver.page_source)
s3=driver.find_element_by_id(xxxx)
s3.click()

根据需要将部分参数换成你所需要的参数,然后打印出pagesource,打印出来我才发现,打印出来的pagesource根本没有我所需要的元素。

也就说明了我的定位方式是没有问题的,是页面出现了问题。有一层浮层遮挡住了,导致appium无法进行定位(当然,如果这一步打印出的pagesouce里包含你所需要的元素,请进行检查元素的定位的方式是否出错)

2、解决问题

问题其实也比较简单解决,就是安卓6.0以后推荐使用uiautomator2进行定位,问题就很轻松愉快的解决了

npm install appium-uiautomator2-driver

安装完毕,打开appium,在启动参数里添加

"automationName": "uiautomator2"

如果遇见还是打不开,出现奇怪的错误,请用管理员权限打开RIDE和appium试试

以上是关于appium+robotframework+python连接真机定位不到元素的问题处理的主要内容,如果未能解决你的问题,请参考以下文章

robotFrameWork APPIUM实现对安卓APK的自动化测试

Robotframework-Appium 之常用API

Python + Robotframework + Appium 之APP自动化测试实践

robotframework + appium实例

Robotframework + Appium 之常用元素定位方法

Robotframework-Appium