Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Appium Python在Android应用程序中进行垂直滚动_Android_Python_Appium - Fatal编程技术网

使用Appium Python在Android应用程序中进行垂直滚动

使用Appium Python在Android应用程序中进行垂直滚动,android,python,appium,Android,Python,Appium,以下是android应用程序的用户界面。在此界面中,可以看到好友列表。它总共有26个朋友。我想滚动用户界面,并想看到所有的朋友。 我想通过Python Appium来实现这一点。我无法滚动它。怎么做?它有资源id、类名、包名,我有边界值,即[0161][540887] 我也有同样的问题。大多数建议的解决方案都不起作用。无论如何,我找到了一个解决方案,您可以在下面看到: # import touch events from appium.webdriver.common.touch

以下是android应用程序的用户界面。在此界面中,可以看到好友列表。它总共有26个朋友。我想滚动用户界面,并想看到所有的朋友。
我想通过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就会变得疯狂