如何在Appium + Python中滚动页面

时间:2017-07-26 11:56:20

标签: appium appium-ios python-appium

我使用Appium + Python创建测试以测试IO应用。 我想滚动页面。 这是代码

    def scroll_page(self):
       action = TouchAction(self)
       action.press(BrowsePageElements.firs_element_to_scroll(self)).
              move_to(BrowsePageElements.second_element_to_scroll(self)).perform()

当我尝试运行此功能时,出现错误

error screenshot

你能帮我找出,如何解决这个错误?

3 个答案:

答案 0 :(得分:1)

这目前对我有用:

    ...
    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_DUR_MS(以毫秒为单位的滚动动作持续时间)。我也不再使用元素作为起点和/或终点,因为我想要一些适用于任何屏幕内容的通用内容。

对于 scroll_y_topscroll_y_bottom,我从屏幕的顶部和底部选取了 20% 以确保我没有碰到边框处的任何东西(例如顶部的导航栏) iOS 首选项或我正在使用的应用程序底部的信息栏)。我还遇到了一个“错误”,当我将 scroll_x 设为 0 时它没有滚动,但事实证明它没有将左边缘注册为我正在使用的应用的滚动区域内.

希望这会有所帮助。

答案 1 :(得分:0)

过去当我因为某种原因遇到问题滚动时,我只是使用坐标向下滚动页面。

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

答案 2 :(得分:0)

Appium Python具有本机scroll函数。它适用于Android和iOS。

driver.scroll(origin_el, destination_el, duration=None),其中duration是一个可选参数。此功能将origin_el滚动到destination_el的位置。

Link to scroll source code

Appium文档不完整,需要更新。但是,源代码已被很好地记录下来,可以理解和学习该程序。