
以下是android应用程序的UI。在这个界面中,可以看到朋友列表。它总共有26个好友。我想滚动UI,想要看到所有的朋友。我想通过Python-Appium来做这件事。我不能滚动它。该怎么做呢?它有resource-id、类名、包名,我有界值,也就是0,161。
发布于 2016-07-02 06:24:20
我也有同样的问题。大多数建议的解决方案都不起作用。总之,我找到了一个解决方案,你可以在下面看到:
# 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保持原样。Y有一个负值。负意味着我们实际上是向上滚动,而不是向下滚动。
执行perfrom()。没什么好说的。
现在我想再加一件东西。除了for循环之外,您还可以执行以下操作:
action.press(x=750,y=1750).move_to(x=0, y=-200).release().perform()注意到区别了吗?它是release()。当你添加这个的时候,我发现这个列表可以很流畅地滚动。就像当你向上滑动的时候,列表有一些惯性。
我不是专家,但我的答案至少应该对你有帮助。祝好运
发布于 2016-07-04 11:50:27
可滚动区域应标记为“可滚动”。您可以使用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“,每次使用不同的实例进行迭代应该很容易。如果您只想滚动到最下面的用户,您可以只搜索那里的用户。
发布于 2019-02-12 19:10:09
我使用TouchAction让它工作的唯一方法是:
ta = TouchAction(driver)
ta.tap(x=100, y=200).wait(100).move_to(x=100, y=80).wait(100).release()
ta.perform()没有这些等待,Iphone就会变得疯狂。
https://stackoverflow.com/questions/32179234
复制相似问题