app中长按操作是经常遇到的场景,如微信中长按某一对话框,则可删除该对话框;如淘宝-》购物车中长按商品信息,则可删除该商品等。
长按某个元素或者某个点,我们可以使用TouchAction类中提供的 long_press 函数操作。
from appium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from appium.webdriver.common.touch_action import TouchAction desired_caps = { 'autoLaunch': 'True', 'deviceName': 'Honor10.0', 'platformVersion': '10.0', 'platformName': 'Android', 'noReset': 'True', 'appPackage': "com.taobao.taobao", 'appActivity': "com.taobao.tao.welcome.Welcome", } driver = webdriver.Remote('127.0.0.1:4723/wd/hub', desired_caps) # 确认已进入淘宝app主页 driver.wait_activity("com.taobao.tao.TBMainActivity", 15) print("已进入淘宝主页!") # 长按音量键+ driver.press_keycode(24) print("增大音量!") # 切换至购物车(description属性定位),长按商品,再删除该商品 driver.find_element_by_android_uiautomator('new UiSelector().description("购物车")').click() # 通过是否可查找到元素loc_goods,判断购物车页面是否有添加有商品 loc_goods = ("xpath", '//*[@resource-id="com.taobao.taobao:id/cart_recycler_view"]/android.widget.FrameLayout[5]') try: ele1 = WebDriverWait(driver, 10, 0.5).until(EC.presence_of_element_located(loc_goods)) except Exception as e: print("购物车竟然是空的!") raise e else: ele2 = driver.find_element_by_android_uiautomator('new UiSelector().description("功夫熊猫 可爱大熊猫 diy数字油画手绘填色装饰挂画 画画油彩画")') TouchAction(driver).long_press(ele2).perform() loc_dels = ("xpath", '//*[@text="删 除"]') ele3 = WebDriverWait(driver, 10, 0.5).until(EC.presence_of_element_located(loc_dels)) ele3.click() print("已将购物车第一件商品删除!")
运行结果:
已进入淘宝主页!
增大音量!
已将购物车第一件商品删除!