如何在Appium+;python
我使用Appium+Python创建测试来测试IOs应用程序。 我想滚动页面。 这是密码如何在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
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页面”对象?您确定元素的位置正确吗?