TouchActions中scroll_from_element()函数的用法解析

最近做的项目是微信公众号,涉及到H5页面。在Chrome上进行UI自动化测试,涉及到滚动选择的界面,类似下面这种:


TouchActions中scroll_from_element()函数的用法解析_第1张图片
image.png

这种界面需要向上或者向下滑动,尝试使用Selenium的ActionChains类中的drag_and_drop函数来实现元素拖动,发现不适用,drag_and_drop是针对浏览器页面的函数,而图片所示的为移动端的H5页面。怎么解决?

查看selenium API后发现这么一个类:
TouchActions中scroll_from_element()函数的用法解析_第2张图片
image.png

touch_actions,从类名我们可以知道,这个类面向的是移动设备的触摸操作。
打开文件我们会发现里面有一个scroll_from_element函数:
'''

def scroll_from_element(self, on_element, xoffset, yoffset):
    """
    Touch and scroll starting at on_element, moving by xoffset and yoffset.

    :Args:
     - on_element: The element where scroll starts.
     - xoffset: X offset to scroll to.
     - yoffset: Y offset to scroll to.
    """
    self._actions.append(lambda: self._driver.execute(
        Command.TOUCH_SCROLL, {
            'element': on_element.id,
            'xoffset': int(xoffset),
            'yoffset': int(yoffset)}))
    return self

'''
通过英文注释我们可以知道这个函数的作用是将一个特定元素沿x轴移动xoffset,沿y轴移动yoffset.
注意这里的offset并不是坐标,我曾将它误认为是坐标,导致走了不少弯路。在代码中一般用coord来表示坐标,而用offset表示偏移量。
既然谈到偏移量,那我们怎么获取offset值呢?


TouchActions中scroll_from_element()函数的用法解析_第3张图片
image.png

很简单,F12查看你要拖动的元素的height,以上图为例,我们可以看到上图的height为41.4px,px即像素。如果你想像上/下滑动元素,那么xoffset的偏移量就为0,yoffset就应该是41.4px的倍数。

你可能感兴趣的:(TouchActions中scroll_from_element()函数的用法解析)