【问题标题】:How to scroll the page in Appium + Python如何在 Appium + Python 中滚动页面
【发布时间】:2018-01-01 17:39:30
【问题描述】:

我使用 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

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

【问题讨论】:

  • 你的'scroll_browser_page'对象是什么?你确定你的元素定位正确吗?

标签: appium appium-ios python-appium


【解决方案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 时它没有滚动,但事实证明它没有将左边缘注册为我正在使用的应用程序的滚动区域内。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 此方法已弃用
    【解决方案3】:

    Appium Python 有一个原生的scroll 函数。它适用于 Android 和 iOS。

    driver.scroll(origin_el, destination_el, duration=None),其中持续时间是可选参数。该函数将origin_el滚动到destination_el的位置。

    Link to scroll source code

    Appium 文档参差不齐,需要更新。但是,源代码的记录足以理解和学习该程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-22
      • 2019-05-02
      • 2014-12-26
      • 2020-04-22
      • 2021-02-28
      • 2016-01-17
      • 2017-06-18
      • 2016-05-16
      相关资源
      最近更新 更多