IOS 自动化没有找到滚动到元素可见,自己写一个记一下

本贴最后更新于 1694 天前,其中的信息可能已经时移世易
def Element_Scroll_To_Visibility(self, locator, fromX, fromY, toX, toY, by=MobileBy.IOS_PREDICATE, model=None): # 将元素滚动到可见区域 """ 将不可见元素滚动到可见区域 :param locator: 元素表达式 :param fromX: 起始位置X坐标倍数 :param fromY: 起始位置Y坐标倍数 :param toX: 终点位置X坐标的倍数 :param toY: 终点位置Y坐标的倍数 :param by: 元素定位方式 :param model: 截图命名默认为None :return: """ try: logging.info('开始滚动操作,一直到元素可见') while True: try: WebDriverWait(self.driver, 1).until(EC. visibility_of_element_located( (by, locator))) break except: pass size = self.driver.get_window_size() self.driver.execute_script("mobile:dragFromToForDuration", {"duration": 0.5, "element": None, "fromX": size['width'] * fromX, "fromY": size['height'] * fromY, "toX": size['width'] * toX, "toY": size['height'] * toY}) except: self._save_screenShot(model) logging.error('获取文本内容失败') raise
1 回帖
请输入回帖内容 ...
  • zeliang.yue

    因为ios系统的元素可见和web定位元素可见不一样。ios可见元素若是使用name或者其他属性进行下标定位肯定不行的,他只会显示可见区域的元素下标。若你下滑到新的区域相同元素,元素的下标还是从0开始。例如商品瀑布流。滚动建议 用xpath。上面方法虽然看着讨巧简单,但够基本使用了,解决目前问题还是可以的。