Appium中scroll和drag_and_drop根據元素位置滑動
背景
我們在操作APP應用時,有些需要從一個元素滑動到另外一個元素時,這時候我們無法確定坐標,所以swipe 根據坐標滑動方式就無法使用瞭,如下圖:從 課堂直播 上滑到 直播公開課 位置
這時候我們就需要使用其他滑動方式,我們想到可以根據元素進行滑動,Appium 裡面根據元素來進行滑動的方式主要方法為 scroll 和 drag_and_drop
scroll 介紹
說明
從一個元素滾動到另一個元素,隻能是兩個元素之間的滑動。
方法詳情
def scroll(self: T, origin_el: WebElement, destination_el: WebElement, duration: Optional[int] = None) -> T: """Scrolls from one element to another Args: origin_el: the element from which to being scrolling destination_el: the element to scroll to duration: a duration after pressing originalEl and move the element to destinationEl. Default is 600 ms for W3C spec. Zero for MJSONWP. Usage: driver.scroll(el1, el2) Returns: Union['WebDriver', 'ActionHelpers']: Self instance """ # XCUITest x W3C spec has no duration by default in server side if self.w3c and duration is None: duration = 600 action = TouchAction(self) if duration is None: action.press(origin_el).move_to(destination_el).release().perform() else: action.press(origin_el).wait(duration).move_to(destination_el).release().perform() return self
參數:
- origin_el – 要滾動的起始元素
- destination_el – 要滾動到的結束元素
- duration – 持續時間,單位毫秒,默認為 600 ms
操作場景
- 進入網易雲首頁
- 從課堂直播滑動到直播公開課位置
關鍵代碼實現
# 定位到課堂直播元素 el1 = driver.find_element(AppiumBy.XPATH, "//*[@text='課堂直播']").click() # 定位到直播公開課元素 el2 = driver.find_element(AppiumBy.XPATH, "//*[@text='直播公開課']").click() # 執⾏滑動操作 driver.scroll(el1,el2)
說明
操作過程有 慣性,需要添加duration參數,參數值越大,慣性越小。
drag_and_drop 介紹
說明
從一個元素滑動到另一個元素,第二個元素代替第一個元素原本屏幕上的位置。
方法詳情
def drag_and_drop(self: T, origin_el: WebElement, destination_el: WebElement) -> T: """Drag the origin element to the destination element Args: origin_el: the element to drag destination_el: the element to drag to Returns: Union['WebDriver', 'ActionHelpers']: Self instance """ action = TouchAction(self) action.long_press(origin_el).move_to(destination_el).release().perform() return self
參數:
- origin_el – 要滑動頁面的起始元素
- destination_el – 要滑動頁面到結束元素
操作場景
- 進入網易雲首頁
- 從課堂直播滑動到直播公開課位置
關鍵代碼實現
# 定位到課堂直播元素 el1 = driver.find_element(AppiumBy.XPATH, "//*[@text='課堂直播']").click() # 定位到直播公開課元素 el2 = driver.find_element(AppiumBy.XPATH, "//*[@text='直播公開課']").click() # 執⾏滑動操作 driver.drag_and_drop(el1,el2)
說明
不能設置持續時間,沒有慣性
滑動和拖拽使用場景選擇
滑動和拖拽無非就是考慮是否具有“慣性”,以及傳遞的參數是“元素”還是“坐標”。
- scroll:有 “慣性” ,傳入 “元素”,可以通過設置duration參數來進行控制慣性大小
- drag_and_drop:無 “慣性” ,傳入 “元素”
- swipe:有 “慣性” ,傳入 “坐標”,可以通過設置duration參數來進行控制慣性大小
說明: 添加duration參數,參數值越大,慣性越小
到此這篇關於Appium中scroll和drag_and_drop根據元素位置滑動的文章就介紹到這瞭,更多相關Appium 元素滑動內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- appium中常見的幾種點擊方式
- python開發App基礎操作API使用示例過程
- python爬蟲之Appium爬取手機App數據及模擬用戶手勢
- Python+Appium實現自動化清理微信僵屍好友的方法
- 用60行代碼實現Python自動搶微信紅包