uiautomator+python Android端上下滑寻找文本元素
- 先指定上滑屏幕 方法swipe_up()
- 下滑屏幕方法swipe_down()
def swipe_up(self): w, h = self.d.window_size() self.d.swipe(w // 2, h // 2, w // 2, h * 1 // 5) self.sleep(1) def swipe_down(self): w, h = self.d.window_size() self.d.swipe(w // 2, h // 2, w // 2, h * 4 // 5) self.sleep(1)
- 整体思路如下:先获取界面元素属性
- 首先定义当前页面元素为page,如果为text在page里面表示找到文本,如果不在page则可以向下滑动,文本不存在就继续下滑,如果滑动前后俩次page元素相同表示已经到达底部/顶部
- 此处先下滑,再上滑,是因为有些app端选项列表会自动定位到上一次已经选择的元素(因此可能位于中间段位置,我们需要上下都查找相关元素)
d = u2.connect()
- 如果上下都未找到,则返回False
def find_text(self, text, swipe=True): """ 查找页面元素 :param text: :param swipe: :return: """ log.info("查找页面元素【{}】".format(text)) page = self.d.dump_hierarchy() if text in page: return True elif swipe: while swipe: page = self.d.dump_hierarchy() log.info("向下滑动一次") self.swipe_down() newpage = self.d.dump_hierarchy() if text in newpage: return True if newpage == page: log.info("滑到顶部了,没有找到元素,继续上滑") while swipe: page = self.d.dump_hierarchy() log.info("向上滑动一次") self.swipe_up() newpage = self.d.dump_hierarchy() if text in newpage: return True if newpage == page: log.info("滑到底了,没有找到元素") return False else: return False