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

时间:2021-01-19 03:17:11

这几天遇到了一个比较奇怪的问题,使用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试试