我使用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()
当我尝试运行此功能时,出现错误
你能帮我找出,如何解决这个错误?
答案 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_top
和 scroll_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
的位置。
Appium文档不完整,需要更新。但是,源代码已被很好地记录下来,可以理解和学习该程序。