appium2 問題
def bezier_curve(sx, sy, ex, ey, cx, cy, part):
pointArr = []
changeX1 = (cx - sx) / part
changeY1 = (cy - sy) / part
# 控制點到結束點的 x 和 y 每次的增量
changeX2 = (ex - cx) / part
changeY2 = (ey - cy) / part
for i in range(part): # 計算兩個動點的座標
qx1 = sx + changeX1 * i
qy1 = sy + changeY1 * i
qx2 = cx + changeX2 * i
qy2 = cy + changeY2 * i
# 計算得到此時的一個貝塞爾曲線上的點座標
bx = qx1 + (qx2 - qx1) * i / part
by = qy1 + (qy2 - qy1) * i / part
pointArr.append([bx, by])
return pointArr
獲取螢幕尺寸
window_size = driver.get_window_size()
screen_width = window_size['width']
screen_height = window_size['height']
定義曲線滑動的座標點列表,可按需增加更多點來細化曲線
point_list = bezier_curve(100,100, 100, 600, 200, 300, 10)
建立 ActionChains 物件
action_chains = ActionChains(driver)
移動到起始點並按下
action_chains.w3c_actions.pointer_action.move_to_location(point_list[0][0], point_list[0][1])
action_chains.w3c_actions.pointer_action.pointer_down()
依次移動經過各中間點
for point in point_list[1:]:
action_chains.w3c_actions.pointer_action.move_to_location(point[0], point[1])
移動到結束點並釋放
action_chains.w3c_actions.pointer_action.move_to_location(point_list[-1][0], point_list[-1][1])
action_chains.w3c_actions.pointer_action.pointer_up()
action_chains.w3c_actions.pointer_action._interval = 0
執行動作鏈
action_chains.perform()
time.sleep(2) # 等待幾秒,便於觀察曲線滑動效果
關閉 Appium 會話
driver.quit()
如上程式碼實現了曲線滑動但是動作過程太慢了,請問各位前輩們有什麼好的解決方法?
相關文章
- 問題 C: 百雞問題
- 【問題】Nacos 使用問題整理
- 什麼是P問題、NP問題和NPC問題
- 博基計劃(3)---P問題、NP問題、NPC問題、NP-hard問題
- [轉載]什麼是P問題、NP問題和NPC問題
- 【問題記錄】—.NetCore 編譯問題NetCore編譯
- 提問題比解決問題更重要
- [開發問題]React-native問題集React
- 約瑟夫問題(丟手絹問題)
- Java服務.問題排查.問題復現Java
- 問題 F: 開燈問題(第二講)
- 面試反問問題面試
- LeetCode問題LeetCode
- this指向問題
- UIImageJPEGRepresentation 問題UI
- clang 問題
- 429問題
- ABA 問題
- 【Git】問題Git
- MySQL 問題MySql
- pycharm問題PyCharm
- JS問題JS
- 接水問題
- 倒水問題
- 有問題
- csrf問題
- LCS 問題
- 今日問題
- 回溯問題
- 火星商店問題 題解
- 約瑟夫環問題 猴子選大王問題
- 完成20個問題後不敢發問題了
- 遇到的編碼問題、時區問題整理
- 無題號 分配問題 題解
- 轉賬問題是屬於業務問題還是屬於技術問題?
- week2 kuangbin 題單 最短路問題 + 並查集問題並查集
- 專案中常問的問題
- 前端面試常問問題前端面試