使用Appium Python在Android应用程序中进行垂直滚动
以下是android应用程序的用户界面。在此界面中,可以看到好友列表。它总共有26个朋友。我想滚动用户界面,并想看到所有的朋友。使用Appium Python在Android应用程序中进行垂直滚动,android,python,appium,Android,Python,Appium,以下是android应用程序的用户界面。在此界面中,可以看到好友列表。它总共有26个朋友。我想滚动用户界面,并想看到所有的朋友。 我想通过Python Appium来实现这一点。我无法滚动它。怎么做?它有资源id、类名、包名,我有边界值,即[0161][540887] 我也有同样的问题。大多数建议的解决方案都不起作用。无论如何,我找到了一个解决方案,您可以在下面看到: # import touch events from appium.webdriver.common.touch
我想通过Python Appium来实现这一点。我无法滚动它。怎么做?它有资源id、类名、包名,我有边界值,即[0161][540887] 我也有同样的问题。大多数建议的解决方案都不起作用。无论如何,我找到了一个解决方案,您可以在下面看到:
# import touch events
from appium.webdriver.common.touch_action import TouchAction
# Find the list element.
list = driver.find_element_by_id('com.abc.android.abc:id/common_tab_list')
# define touch
action = TouchAction(driver)
# adjust here to your needs !
for x in range(0,10):
action.press(x=750,y=1750).move_to(x=0, y=-75).perform()
主要部分是for循环。基本上是垂直滚动10次。您可能需要给出不同的x和y坐标。当您在设备上启用指针位置时,您可以很容易地找到这一点。当您触摸屏幕时,将显示x和y坐标。要启用它,只需转到
设置
开发人员选项
指针位置名称可能不同我手机上有德语
然后触摸设备的底部,在顶部可以看到坐标。您可以将其添加到操作中。按X=yourX,y=yourY
将_移动到-因为您希望垂直滚动保持x不变。y有一个负数。负数表示我们实际上是向上滚动而不是向下滚动
perfrom是执行的。没什么好说的
现在我想补充一点。您可以执行以下操作,而不是for循环:
action.press(x=750,y=1750).move_to(x=0, y=-200).release().perform()
注意到区别了吗?这是释放。当你添加这个时,我发现列表将平滑地滚动。比如当你向上滑动时,列表有一些惯性
我不是专家,但我的回答至少对你有帮助。
祝你好运,我也有同样的问题。大多数建议的解决方案都不起作用。无论如何,我找到了一个解决方案,您可以在下面看到:
# import touch events
from appium.webdriver.common.touch_action import TouchAction
# Find the list element.
list = driver.find_element_by_id('com.abc.android.abc:id/common_tab_list')
# define touch
action = TouchAction(driver)
# adjust here to your needs !
for x in range(0,10):
action.press(x=750,y=1750).move_to(x=0, y=-75).perform()
主要部分是for循环。基本上是垂直滚动10次。您可能需要给出不同的x和y坐标。当您在设备上启用指针位置时,您可以很容易地找到这一点。当您触摸屏幕时,将显示x和y坐标。要启用它,只需转到
设置
开发人员选项
指针位置名称可能不同我手机上有德语
然后触摸设备的底部,在顶部可以看到坐标。您可以将其添加到操作中。按X=yourX,y=yourY
将_移动到-因为您希望垂直滚动保持x不变。y有一个负数。负数表示我们实际上是向上滚动而不是向下滚动
perfrom是执行的。没什么好说的
现在我想补充一点。您可以执行以下操作,而不是for循环:
action.press(x=750,y=1750).move_to(x=0, y=-200).release().perform()
注意到区别了吗?这是释放。当你添加这个时,我发现列表将平滑地滚动。比如当你向上滑动时,列表有一些惯性
我不是专家,但我的回答至少对你有帮助。
祝你好运可滚动区域应标记为可滚动。您可以使用Android UIAutomator和UiScrollable来解决这个问题
user_scroll = 'new UiScrollable(new UiSelector().scrollable(true).' +
'instance(0)).scrollIntoView(new UiSelector().text("user-text").instance(0))'
user = self.driver.find_element_by_android_uiautomator(user_scroll)
我们所做的是选择我们关心的滚动区域。使用它,我们滚动到一个特定的元素。在本例中,我们滚动到一个包含特定文本的元素
如果您想一次滚动到每个用户,那么每次使用不同的UiSelector.text实例进行迭代应该很容易。如果您只想滚动到底部用户,您可以只搜索那里的用户。可滚动区域应标记为可滚动。您可以使用Android UIAutomator和UiScrollable来解决这个问题
user_scroll = 'new UiScrollable(new UiSelector().scrollable(true).' +
'instance(0)).scrollIntoView(new UiSelector().text("user-text").instance(0))'
user = self.driver.find_element_by_android_uiautomator(user_scroll)
我们所做的是选择我们关心的滚动区域。使用它,我们滚动到一个特定的元素。在本例中,我们滚动到一个包含特定文本的元素
如果您想一次滚动到每个用户,那么每次使用不同的UiSelector.text实例进行迭代应该很容易。如果您只想滚动到底部用户,您只需搜索该用户。我使用TouchAction使其工作的唯一方法是: ta=触摸操作驱动程序 ta.tapx=100,y=200.wait100.move_-tox=100,y=80.wait100.release 助教
如果没有这些等待,Iphone就会变得疯狂 我使用TouchAction使其工作的唯一方法是: ta=触摸操作驱动程序 ta.tapx=100,y=200.wait100.move_-tox=100,y=80.wait100.release 助教 如果没有这些等待,Iphone就会变得疯狂