Appium 请问 appium 点击控件两种方法的区别,一个是 tap 另一个时 click

Ji Wei · 2017年10月16日 · 最后由 null 回复于 2017年11月01日 · 2056 次阅读

问题背景:最近使用 appium 测试 app,发现有一种情况不知道怎么破解。两个控件 id 重叠在一个区域了,如下图所示

使用 xpath 进行定位点击的时候并不是点击到了 “更多” 而是点击到了上面那个广告。本人使用了 click 的方法。另一个方法 tap 是点击屏幕的估计更不适用。
请问一下各位有何办法破解?

共收到 13 条回复 时间 点赞

区别:element 的 click 事件默认是去 tap 这个 view 的中间位置坐标
对于你这个情况 如果覆盖 View 位置是定死的 在你拿到 element 的时候 获取位置和坐标 判断一下就行了
对于其他不能确定的情况,还是比较复杂,目前我只是基于 Xpath 来判断,还没搞出一个又快又完善的办法来

同问,对于一个不可移的浮层,如何避免它遮盖你需要找的元素呢?

joko 回复

抢红包 image 控件不可移动,不可删除,第三方的 SDK 的

def move_loc_to_loc(self, start_loc, end_loc):
    """
    移动控件到另一控件位置
    :param start_loc:  
    :param end_loc: 
    :return: 
    """

    def loc_point(loc):
        element = self.__operating_element(*self.__is_element_or_elements(loc))
        return self.get_center_point(self.__element_rect(element))

    start_x, start_y = loc_point(start_loc)
    end_x, end_y = loc_point(end_loc)
    self.__swipe(start_x, start_y, end_x, end_y, 1)

如果浮层是一个可移动的控件,封装一个 move_loc_to_loc,传入控件,解析控件坐标,调用 swipe 把控件移走即可。之后再点击你想要的控件

回复

是的,不一样

id 不一样把?

DC 回复

觉得这也是一种方法,就是比较绕了点。具体还是得试过才知

能不能查找到两个元素的坐标,相对靠近,就滑动一下,将他分开,这样试试?

donly 回复

随机滚动的,这个控制不了

往上拉点

向上拖动页面,让这两个元素分离比较好,感觉 appium 不能使某个元素隐藏掉挺蛋疼的

要不使用 swipe 将屏幕往上拉一点,然后再 click 点击?

自己顶

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册