这几天遇到了一个比较奇怪的问题,使用RF框架进行自动化测试的时候定位不到部分元素
并且这个元素的是有id的,更换了xpath定位也行不通,冥思苦想,加上谷歌百度,终于解决了
解决步骤如下:
1、定位问题
首先编写个简单的test.py,用来进行debug
进入包含定位不到元素的页面,打印出pagesource
from appium import webdriverfrom time import sleepmeizu = {"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试试