appium+python自动化48-长按(long_press)

长按操作是经常会遇到的场景,通过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): 长按操作,可以传定位的元素对象,也可以传坐标 el 是定位元素的对象 x,y是传坐标 duration是按住的持续时间,默认1000,单位是毫秒 

2.实现方法

# 长按TouchAction(driver).long_press(el).perform()

参考代码

# coding:utf-8from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionimport timedesired_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() 

 

相关文章