2- appium API 之 TouchAction 操作

appium API 之 TouchAction 操作

一: TouchAction

1,手指操作

swipe 滑动

driver.swipe(300,900,300,900,1000) 
注释:起始位置--》结束位置--》滑动时间
a:可通过获取屏幕driver.get_window_size() 尺寸进行滑动以免避免不同设备分辨率不同。

tap(element=None, x=None, y=None, count=1) 轻点击

from appium.webdriver.common.touch_action import TouchAction
if __name__ == '__main__':
    driver = __init_driver()
    try :
        time.sleep(5)
        ele =driver.find_element_by_xpath("//*[contains(@text,'应用市场')]")
        TouchAction(driver).tap(ele).perform()
注释:
1, TouchAction要先导入此类 通过元素定位执行
2,通过by_xpath 获取参数传给tap 后传给Perform() 执行的操作发送到服务器的命令操作
TouchAction(driver).press(ele).wait(2000).move_to(x=100,y=100).wait(2000).release().perform()
即可拓展到一系列操作

通过坐标执行tap操作
TouchAction(driver).tap(x=ele.location.get("x"),y=ele.location.get("y")).perform()

press(el=None, x=None, y=None, pressure=None) 按

TouchAction(driver).press(ele).release().perform()
注释:长按-后release 释放 ,依次把这两个动作传给服务执行

long_press(self, el=None, x=None, y=None, duration=1000)
同样可传参定位元素,坐标,按压时间(毫秒)

wait(ms=0) 等待时间

release() 释放之前操作

perform() 传送服务执行
Perform the action by sending the commands to the server to be operated upon

可以点击进入类的解析查看类所包含方法
在这里插入图片描述
两种操作实现对多组定位元素的点击

    try :
        time.sleep(5)
        driver.find_element_by_xpath("//*[contains(@text,'应用市场')]").click()
        time.sleep(5)
        ele = driver.find_elements_by_id('com.huawei.appmarket:id/lanternName')
        for i in ele:
            print(i.text)
            if i.text == "分类":
                print(i.text)
                TouchAction(driver).tap(element=i,count=1).perform()
                break #1,TouchAction 点击
            if i.get_attribute("text") == "分类":
                i.click()
                break# 2,获取元素属性点击

操作实例:
点开应用市场-分类-点击实用工具到商务-然后右侧下滑-下滑-上滑动
在这里插入图片描述

import time
from selenium.webdriver.support.ui import WebDriverWait
from init_driver.init_Driver import  __init_driver
from appium.webdriver.common.touch_action import TouchAction

def wait_driver(xpath):
    return  WebDriverWait(driver,5,0.5).until(lambda x: x.find_element_by_xpath(xpath))
if __name__ == '__main__':
    driver = __init_driver()
    try :
        driver.implicitly_wait(2)
        #点击打开应-用市场
        driver.find_element_by_xpath("//*[contains(@text,'应用市场')]").click()
        #显示等待进入分类
        wait_driver("//*[contains(@text,'分类')]").click()
        #点击实用工具
        driver.find_element_by_xpath("//*[contains(@text,'实用工具')]").click()
        #从社交通讯-滑动到-商务
        s_ele = wait_driver("//*[contains(@text,'社交通讯')]")
        e_ele = wait_driver("//*[contains(@text,'商务')]")
        driver.drag_and_drop(e_ele,s_ele)
        #按住(500,560)-(0,300)-(0,400)-(0,-500) 后面都是对于上一个左边的相对坐标
        TouchAction(driver).press(x=500,y=560).wait(1000).move_to(x=0,y=300).wait(1000).move_to(x=0,y=400).wait(1000).move_to(x=0,y =-500).wait(100).release().perform()

    except Exception as e :
        print(e)
    finally:
        print(time.strftime("%H:%M:%S", time.localtime()))
        driver.quit()

异常:
selenium.common.exceptions.TimeoutException: Message:
需要使用

def wait_driver(xpath):
    return  WebDriverWait(driver,5,0.5).until(lambda x: x.find_element_by_xpath(xpath))

否侧在driver.drag_and_drop(e_ele,s_ele) 运行可能会出现问题

资料
3-全功能pytest测试框架
https://blog.csdn.net/weixin_42914706/article/details/112300912

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

45度看我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值