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("已將購物車第一件商品刪除!")
運行結果:
已進入淘寶主頁!
增大音量!
已將購物車第一件商品刪除!