上星期做测试,需要把页面中的某个位置上的东东拖到另个位置上 (同一页面)。

查看了下 python 的例子,发现有个 slider 的例子,使用的是 actiontouchactionflick 等方法,但我机器上却报错,无法运行。

大概 google 了下 touchaction 的用法,找了 1 个多小时不得其所,算了,自己用最笨的方法解决算了,用 swipe 方法搞定了。

我的需求很算单,如图。

把红色框住的 "banana"(dragable object = do) 拖放到红色框住的蓝色框 (droppable slot = ds)。

由于 do 是一个区域,ds 也是一个区域,反复试了下,最可靠的做法就是: 点击并按住 do 的中间部位,拖动 do 到 ds 的中间部位。

这其中就涉及到计算 do 和 ds 的中间部位的座标了,找到了,就拖动了:

我使用下面的方法计算 do, ds 的中间部位的座标,python, 在 unit test 中。
其中怎么找 do,和 ds 就不说了。

#drap and drop one element by 1 touch and by WebElement
def _dd_by_elem(self, startElem, endElem):
    sX = int(startElem.location['x']) + (int(startElem.size['width'])/2)
    sY = int(startElem.location['y']) + (int(startElem.size['height'])/2)
    eX = int(endElem.location['x']) + (int(endElem.size['width'])/2)
    eY = int(endElem.location['y']) + (int(endElem.size['height'])/2)

    args = {"touchCount": 1, "startX": sX, "startY": sY, "endX": eX, "endY": eY, "duration": 1.2}
    try:
        self.driver.execute_script("mobile: swipe", args)
    finally:
        pass

此中有 3 个关键点:

这方法挺费时间的,每个拖动至少需要 1 秒钟,如果师兄有更好的方法,不妨提供出来。

这里问一个 longClick 怎么用呢?

有会的师兄请给出个代码。
谢谢。


↙↙↙阅读原文可查看相关链接,并与作者交流