[英]Vertical scrolling in Android app using Appium-Python
我有同樣的問題。 建議的大多數解決方案均無效。 無論如何,我找到了一個可以在下面看到的解決方案:
# 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()被執行。 沒什么好說的。
現在,我想再添加1件事。 您可以執行以下操作來代替for循環:
action.press(x=750,y=1750).move_to(x=0, y=-200).release().perform()
注意到區別了嗎? 它是release()。 當您添加時,我發現列表將平滑滾動。 就像您向上滑動時,列表有些慣性一樣。
我不是專家,但我的回答至少應該對您有幫助。 祝好運
可滾動區域應標記為“可滾動”。 您可以使用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 = TouchAction(driver)
ta.tap(x=100, y=200).wait(100).move_to(x=100, y=80).wait(100).release()
ta.perform()
沒有這些等待,iPhone就會發瘋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.