簡體   English   中英

使用Appium-Python在Android應用中進行垂直滾動

[英]Vertical scrolling in Android app using Appium-Python

在此處輸入圖片說明

以下是Android應用的用戶界面。 在此,“朋友”列表的UI可見。 它共有26個朋友。 我想滾動用戶界面,並希望看到所有朋友。 我想通過Python-Appium做到這一點。 我無法滾動它。 怎么做? 它具有資源ID,類名,包名,而我具有界限值,即[0,161] [540,887]。

我有同樣的問題。 建議的大多數解決方案均無效。 無論如何,我找到了一個可以在下面看到的解決方案:

    # 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. 指針位置(名稱可能有所不同,我的手機上有德語)

然后觸摸設備的底部,然后在頂部看到坐標。 您可以將其添加到“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM