Python+appium,swipe和scroll的滑屏操作都报同一个错误(Method has not yet been implemented)求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python+appium,swipe和scroll的滑屏操作都报同一个错误(Method has not yet been implemented)求助相关的知识,希望对你有一定的参考价值。

参考技术A 在手机浏览器使用swipe、scroll等手机特有行为时,因为默认context是WEBVIEW,所有一定要切换回NATIVE_APP才可以使用。
python:

12

driver.switch_to.context("NATIVE_APP") driver.swipe(300, 970, 300, 20)追问

试了一下不行 还是一样报错

参考技术B 应该是你的client端和server端不匹配导致的.
我刚刚就出现你这个问题 已经排查成功了.
方法,降级client或者升级server
参考技术C 在手机浏览器使用swipe、scroll等手机特有行为时,因为默认context是WEBVIEW,所有一定要切换回NATIVE_APP才可以使用。
python:

12

driver.switch_to.context("NATIVE_APP") driver.swipe(300, 970, 300, 20)
参考技术D 看起来是实现了接口,但是没有继承方法 第5个回答  2022-09-07 同问 这个问题 题主解决了吗

Appium-python-UI自动化之页面-上下滑动左右滑动swipe方法操作

1.首先看app中怎么划分横纵坐标

 

 

2.swipe函数

def swipe(self, start_x, start_y, end_x, end_y, duration=None):
        """Swipe from one point to another point, for an optional duration.

        Args:
            start_x (int): x-coordinate at which to start
            start_y (int): y-coordinate at which to start
            end_x (int): x-coordinate at which to stop
            end_y (int): y-coordinate at which to stop
            duration (:obj:`int`, optional): time to take the swipe, in ms.

        Usage:
            driver.swipe(100, 100, 100, 400)

        Returns:
            `appium.webdriver.webelement.WebElement`
        """
        # `swipe` is something like press-wait-move_to-release, which the server
        # will translate into the correct action
        action = TouchAction(self)
        action \\
            .press(x=start_x, y=start_y) \\
            .wait(ms=duration) \\
            .move_to(x=end_x, y=end_y) \\
            .release()
        action.perform()
        return self
解析:
swipe(self, start_x, start_y, end_x, end_y, duration=None)
swipe(开始横坐标,开始纵坐标,结束横坐标,结束纵坐标,
持续的时间,单位毫秒)




重点:在执行swipe之前一定要强制sleep 3-4s,不然会出现:wipe did not complete successfully报错




3.各种滑动
  3.1 因为每个手机的坐标可能都不一样,这里我们可以通过先获取手机屏幕的长和宽,然后再次计算需要滑动的坐标位置,
    
def get_myWindow_size(self):

    \'\'\'
    获取手机长宽
    :return:
    \'\'\'

    x = self.driver.get_window_size()[\'width\']  # 获取x轴的长度
    y = self.driver.get_window_size()[\'height\']  # 获取y轴的长度

    return x,y

    3.2 向下滑动,即x轴不变,y轴减小

def swipeDown(self):

    \'\'\'
    页面向下滑动
    :return:
    \'\'\'

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+\',\'+str(size[1]))
    x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点
    y1 = int(size[1] * 3/4)  # size[1]取元组的第二个值,*0.1表示距离底部近
    y2 = int(size[1] * 1/6)
    time.sleep(4)
    self.driver.swipe(x1, y1, x1, y2, 1000)

   3.3 向下滑动,即x轴不变,y轴增大

  

def swipeUp(self):

    \'\'\'
    页面向上滑动
    :return:
    \'\'\'

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+\',\'+str(size[1]))
    x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点
    y1 = int(size[1] * 1/6)  # size[1]取元组的第二个值,*0.1表示距离底部近
    y2 = int(size[1] * 3/4)
    time.sleep(4)
    self.driver.swipe(x1, y1, x1, y2, 1000)

   3.4 向右滑动 ,即x减小,y轴不变

def swipRight(self):

    \'\'\'
    页面向右滑动
    :return:
    \'\'\'

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+\',\'+str(size[1]))
    x1 = int(size[0] * 0.5)  # size[0]取元组的第一个值,*0.5表示中间的点
x2 = int(size[0] * 0.25) # size[0]取元组的第一个值,*0.5表示中间的点
y1 = int(size[1] * 3/4) # size[1]取元组的第二个值,*0.1表示距离底部近
y2 = int(size[1] * 1/6)
    time.sleep(4)
    self.driver.swipe(x1, y1, x2, y1, 1000)

   3.5 向左滑动,即x轴增大,y轴不变

def swipLeft(self):

    \'\'\'
    页面向左滑动
    :return:
    \'\'\'

    size = self.get_myWindow_size()
    MyLog.logger().info("size :" +str(size[0])+\',\'+str(size[1]))
    x1 = int(size[0] * 0.25)  # size[0]取元组的第一个值,*0.5表示中间的点
    x2 = int(size[0] * 0.75)  # size[0]取元组的第一个值,*0.5表示中间的点
    y1 = int(size[1] * 3/4)  # size[1]取元组的第二个值,*0.1表示距离底部近
    y2 = int(size[1] * 1/6)
    time.sleep(4)
    self.driver.swipe(x1, y1, x2, y1, 1000)

 

以上是关于Python+appium,swipe和scroll的滑屏操作都报同一个错误(Method has not yet been implemented)求助的主要内容,如果未能解决你的问题,请参考以下文章

Python+Appium自动化之swipe()滑动页面

Appium-python-UI自动化之页面-上下滑动左右滑动swipe方法操作

Python+appium,swipe和scroll的滑屏操作都报同一个错误(Method has not yet been implemented)求助

使用 Appium 执行 swipe() 时提到的“步骤”是啥

Swipe 和 Scroll 关键字在带有 Appium 库的 AWS Device Farm 中停止工作

UI Automator 和 driver.swipe via appium 有啥区别