经常有些滑动场景,比如:滑动列表找到指定元素,可能该元素并没有在当前页面显示,需要进行滑动至指定位置该元素才显示,那么怎么针对该场景去定位元素操作元素呢?
问题解决思路:每次滑动一段距离,利用while循环判断该页面是否包含某个元素文本信息,如果有的话就获取该元素信息,没有的话继续滑动
#获取当前页面所有的布局、元素信息 pagesource=driver.page_source #new_pagesource存放滑动之后的pagesource信息 new_pagesource=None #例如在页面中找“吃个鱼丸” while "吃个鱼丸"not in new_pagesource: pagesource=driver.page_source #向下滚动页面,引用封装好的swipeDown()方法,见https://www.cnblogs.com/123blog/p/12622826.html swipeDown(1000) new_pagesource=driver.page_source #找到吃个鱼丸进行点击 if pagesource.find("吃个鱼丸")!=-1: driver.find_element_by_android_uiautomator("new UiSelector().text("吃个鱼丸")").click()
用上诉的思路能够实现我们的需求,但是代码相对来说比较复杂,我们还有一种解决思路能够提供更快捷的方式。
问题解决思路:利用UiAutomator中的UiScrollable滚动类来讲元素滚动到可见区域再来操作;
UiScrollable可以生成一个滚动动作的对象,其最大的作用就是可以实现滚动的查找某个元素,具体用法见官方文档:https://developer.android.google.cn/training/testing/ui-automator#ui-automator-apis
element=driver.find_element_by_android_uiautomator(‘new UiScrollable(new Uiselector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textMatches(\"吃个鱼丸\").instance(0))‘) #再对元素进行操作-点击 element.click()