一、前言

在做App自動化測驗時,我們會遇到如上圖所示的串列資料頁面左滑洗掉場景,一般可以通過location、rect方法獲取對應串列的元素坐標,然后使用TouchAction或者swipe滑動需要的元素,這種通過坐標滑動的方式只能適用于原生App環境,webview環境獲取的坐標與螢屏像素點不一致,具體介紹可以看我博客的上一篇文章,
Webview環境處理這種問題,可以使用TouchActions里面的flick_element()方法,
二、用到的方法
TouchActions里面的flick_element()方法是先找到元素,然后以元素中心為原點沿著X、Y軸移動像素點,不需要獲取元素的坐標,
1、 flick_element(on_element, xoffset, yoffset, speed)
從 on_element 開始輕彈,然后以指定的速度移動 xoffset 和 yoffset,
引數:
- on_element: Flick 將從元素的中心開始,
- xoffset: X 軸偏移量
- yoffset: Y 軸偏移量
- speed: 每秒偏移的像素
上面的引數中on_element為定位到的元素物件,
xoffset、yoffset為偏移的像素點,原點是元素的中心,向右和向下偏移為正數、向左和向上偏移為負數,如下圖:

Speed為每秒偏移的像素,也就是移動的速度,可以根據手機的性能來設定,
三、 示例

執行的代碼:
from selenium.webdriver.common.touch_actions import TouchActions
# 獲取螢屏的寬度
width = driver.get_window_size()['width']
# 拖拽的元素
ele_str = driver.find_element(By.XPATH, "//span[text()='張三']/../following-sibling::div[@class='edit']")
# X負方向左滑寬度的40%,以每秒1000個像素點的速度移動
TouchActions(driver).flick_element(ele_str, -width * 0.4, 0, 1000).perform()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/301662.html
標籤:其他
