上星期做测试,需要把页面中的某个位置上的东东拖到另个位置上 (同一页面)。
查看了下 python 的例子,发现有个 slider 的例子,使用的是 action
,touchaction
,flick
等方法,但我机器上却报错,无法运行。
大概 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
怎么用呢?
有会的师兄请给出个代码。
谢谢。