如何在Appium+;python

如何在Appium+;python,appium,appium-ios,python-appium,Appium,Appium Ios,Python Appium,我使用Appium+Python创建测试来测试IOs应用程序。 我想滚动页面。 这是密码 def scroll_page(self): action = TouchAction(self) action.press(BrowsePageElements.firs_element_to_scroll(self)). move_to(BrowsePageElements.second_element_to_scroll(self)).p

我使用Appium+Python创建测试来测试IOs应用程序。 我想滚动页面。 这是密码

    def scroll_page(self):
       action = TouchAction(self)
       action.press(BrowsePageElements.firs_element_to_scroll(self)).
              move_to(BrowsePageElements.second_element_to_scroll(self)).perform()
当我试图运行这个函数时,我得到一个错误


你能帮我找出,如何修复这个错误吗?

过去,当我因为这样或那样的原因遇到滚动问题时,我只是使用坐标向下滚动页面

self.driver.swipe(100, 700, 100, 150)

Appium Python有一个本机的
滚动
函数。它适用于Android和iOS

驱动程序。滚动(起点、终点、持续时间=无)
,其中持续时间是可选参数。此功能将
原点
滚动到
目的地
的位置


Appium文档比较零散,需要更新。但是,源代码的文档记录得足够好,足以理解和学习该程序。

这对我来说目前很有效:

    ...
    SCROLL_DUR_MS = 3000
    ...
    window_size = self.driver.get_window_size()
    self.scroll_y_top = window_size['height'] * 0.2
    self.scroll_y_bottom = window_size['height'] * 0.8
    self.scroll_x = window_size['width'] * 0.5
    ...

def scroll_up(self):
    self._y_scroll(self.scroll_y_top, self.scroll_y_bottom)

def scroll_down(self):
    self._y_scroll(self.scroll_y_bottom, self.scroll_y_top)

def _y_scroll(self, y_start, y_end):
    actions = TouchAction(self.driver)
    actions.long_press(None, self.scroll_x, y_start, SCROLL_DUR_MS)
    actions.move_to(None, self.scroll_x, y_end)
    actions.perform()
它在3秒内缓慢滚动,因为我希望它能被控制,但是如果你想要更大范围的滚动,你可以缩短滚动时间(滚动动作的持续时间以毫秒为单位)。我也不再使用元素作为开始点和/或结束点,因为我想要一些通用的东西来处理任何屏幕内容

对于
scroll_y_top
scroll_y_bottom
,我从屏幕的顶部和底部选择了20%以确保我没有碰到任何边界(比如iOS首选项顶部的导航栏或我正在使用的应用程序底部的信息栏)。我还遇到了一个“bug”,当我将
scroll_x
设置为0时,它没有滚动,但它没有将左边缘注册为我正在使用的应用程序的滚动区域内


希望这有帮助。

这是不推荐的方法。什么是“滚动\u浏览器\u页面”对象?您确定元素的位置正确吗?