以下是Android应用的用户界面。在此,可以看到“朋友”列表的UI。它有26个朋友。我想滚动UI,想要看到所有的朋友。 我想通过Python-Appium来做到这一点。我无法滚动它。怎么做?它有资源ID,类名,包名,我有界限值,即[0,161] [540,887]。
答案 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坐标。要启用它,只需转到
然后触摸设备底部,在顶部您将看到坐标。这可以添加到“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就会发疯。