Appium之长按元素

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("已将购物车第一件商品删除!")


运行结果:
已进入淘宝主页!
增大音量!
已将购物车第一件商品删除!

 

posted @ 2020-09-14 16:38  Maruying  阅读(1374)  评论(0编辑  收藏  举报