tap模擬手勢點擊坐標
tap是通過給定坐標,模擬手勢點擊頁面上的元素。
參數:第一個是positions,是list類型最多五個(元組表示),duration是持續時間,單位為ms。函數原型如下:
tap(positions, duration=None)
如:driver.tap([(100, 20), (100, 60), (100, 100)], 500)
實踐操作:
打開“小猿搜題app”,點擊“猿輔導” -》搜索框,並錄入“熊貓”進行查找。
思路:先通過weditor工具找到需要點擊的坐標點,再在腳本中使用坐標作為參數。
1、工具定位坐標點
2、腳本源碼
from appium import webdriver from time import sleep from appium.webdriver.common.touch_action import TouchAction desired_caps = { 'autoLaunch': 'True', 'deviceName': 'honor10', 'platformName': 'Android', 'platformVersion': '10.0', 'appPackage': 'com.fenbi.android.solar', 'appActivity': 'com.fenbi.android.solar.activity.RouterActivity', 'noReset': 'True', "unicodeKeyboard": "True", # 使用unicode編碼方式發送字符串(以便鍵盤輸入中文) "resetKeyboard": "True", # 在運行具有unicodeKeyboard功能的Unicode測試之后,將鍵盤重置為其原始狀態。若單獨使用,則忽略。(后需手動進入系統修改回原鍵盤輸入法) } driver = webdriver.Remote('127.0.0.1:4723/wd/hub', desired_caps) sleep(3) TouchAction(driver).tap(x=326, y=2150).release().perform() # driver.tap([(326, 2211)], 500) # 有點奇怪,若使用此處的tap函數,不會報錯2211已超出寬高(實際寬高為1080*2190),上一行的tap函數則會包錯,但最后調用的也是同一方法... # size = driver.get_window_size() # width = size['width'] # 由於不同手機的寬高像素不同,所以坐標點可改用寬高像素占比的百分比來表示 # height = size['height'] # driver.tap([(width*0.448, height*0.981)]) driver.tap([(875, 150)], 500) sleep(5) driver.find_element_by_id("com.fenbi.android.solar:id/search_bar").send_keys("熊貓") # 報錯Message: Cannot set the element to '熊貓'. Did you interact with the correct element? sleep(5) driver.tap([(987, 159)]) sleep(3)