В настоящее время это работает для меня:
...
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, но оказалось, что он не регистрировал левый край, как внутри области прокрутки для приложения, в котором я работал.
Надеюсь это поможет.
person
user14919794
schedule
06.02.2021