前言
長按操作是經常會遇到的場景,通過driver可以直接調出long_press_keycode方法,但是這個方法是長按手機上某個按鈕,比如長按電源鍵,長按home鍵。 長按某個元素或者長按屏幕上某個點,就需要用到TouchAction里面提供的long_press操作了
定位ListView
1.先看看哪些場景是ListView
2.像這種listview里面每行記錄的id都是一樣的,就用前面講到的list定位,取下標就可以了
3.定位參考
# 定位聊天記錄列表,選第一個長按
el = driver.find_elements_by_id("com.tencent.mm:id/apv")[0]
長按long_press
1.長按的操作可以用前面講到的TouchAction類里面的long_press方法操作
def long_press(self, el=None, x=None, y=None, duration=1000):
# 作者:上海-悠悠 QQ交流群:512200893
長按操作,可以傳定位的元素對象,也可以傳坐標
el 是定位元素的對象
x,y是傳坐標
duration是按住的持續時間,默認1000,單位是毫秒
2.實現方法
# 長按
TouchAction(driver).long_press(el).perform()
參考代碼
# coding:utf-8
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time
# 作者:上海-悠悠 QQ交流群:330467341
desired_caps = {
'platformName': 'Android',
'platformVersion': '7.0',
'deviceName': 'A5RNW18316011440',
'appPackage': 'com.tencent.mm',
'appActivity': '.ui.LauncherUI',
'automationName': 'Uiautomator2',
# 'unicodeKeyboard': True,
# 'resetKeyboard': True,
'noReset': True,
# 'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(10)
# 定位聊天記錄列表,選第一個長按
el = driver.find_elements_by_id("com.tencent.mm:id/apv")[0]
# 長按
TouchAction(driver).long_press(el).perform()
time.sleep(3)
# 定位選項框‘刪除該聊天’
driver.find_element_by_xpath("//*[@text='刪除該聊天']").click()
time.sleep(3)
# 定位選項框‘取消’
driver.find_element_by_id("com.tencent.mm:id/alk").click()
在學習過程中有遇到疑問的,可以appium+python QQ群交流:330467341