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

时间:2015-08-24 09:49:27

标签: android python appium

enter image description here

以下是Android应用的用户界面。在此,可以看到“朋友”列表的UI。它有26个朋友。我想滚动UI,想要看到所有的朋友。 我想通过Python-Appium来做到这一点。我无法滚动它。怎么做?它有资源ID,类名,包名,我有界限值,即[0,161] [540,887]。

3 个答案:

答案 0 :(得分:3)

我有同样的问题。大多数建议的解决方案都不起作用。无论如何,我找到了一个解决方案,你可以在下面看到:

    # 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坐标。要启用它,只需转到

  1. 设置
  2. 开发人员选项
  3. 指针位置(名称可能不同,我手机上有德语)
  4. 然后触摸设备底部,在顶部您将看到坐标。这可以添加到“action.press(x = yourX,y = yourY)....”

    move_to() - 因为您希望垂直滚动按原样保留x。你有一个负面的。否定意味着我们实际上是向上滚动而不是向下滚动。

    执行perfrom()。没什么可说的。

    现在我想再添加一件东西。您可以执行以下操作,而不是for循环:

     action.press(x=750,y=1750).move_to(x=0, y=-200).release().perform()
    

    注意到区别?它的发布()。当你添加它时,我发现列表将顺利滚动。就像你向上滑动,列表有一些惯性。

    我不是专家,但我的回答至少可以帮到你。 祝你好运

答案 1 :(得分:0)

可滚动区域应标记为"可滚动"。您可以使用Android UIAutomator和UiScrollable来解决此问题。

<select>
<option value="test1">Test 1</option>
<option value="test2">Test 2</option>
<option value="test3">Test 3</option>
</select>

我们正在做的是选择我们关心的滚动区域。使用它,我们滚动到一个特定的元素。在这种情况下,我们将滚动到包含某些特定文本的元素。

如果您想一次滚动到每个用户,那么每次为UiSelector&#34; .text&#34;使用不同的实例应该很容易迭代。如果您只想滚动到最底层用户,则只需搜索那里的用户。

答案 2 :(得分:0)

使用TouchAction使其正常工作的唯一方法是:

ta = TouchAction(driver)
ta.tap(x=100, y=200).wait(100).move_to(x=100, y=80).wait(100).release()
ta.perform()

没有这些等待,iPhone就会发疯。