我是靠谱客的博主 自觉月亮,最近开发中收集的这篇文章主要介绍Appium中无法实现短时快速点击解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.场景需求

   现在的很多App都采用验证码登录,或者获取本机号码一键登录,但做自动化时机子设备不一定有SIM卡,前端人员也无数据库权限,无法获取到发出的验证码。但在测试环境,开发为了方便测试,还是会预留密码登录的入口,做法就是点击欢迎登录的标题6下,但连续点击有时间限制,太慢出不来。

思路:初学appium,以为使用click()方法,再用for循环连续点击6下即可出来,但还是太天真了,前一晚在自己电脑模拟器使用还可以,到了办公电脑的真机和模拟器就不管用了。连续点击的时间基本都超过了6秒。可能appium封装的这个点击事件,从发起请求到机器执行再到结果返回,时间略长。

   然后就想着直接使用cmd命令操作,使用adb shell 命令“adb shell input tap 100 100”,但是该命令也是需要appium发送一条执行,路径长时间长,且不可设置点击间隔。失败告终

   最后想到,adb monkey 发送伪随机用户事件操作时速度很快而且执行间隔可设置。但是monkey脚本需要push到设备上才可以执行。虽然盲目但总得一试,没想到该方法在几台设备上均可以成功。以下为代码

此处为生成脚本文件并直接执行,还没做异常处理

# 封装简单的业务基本操作代码
class ServiceUtils:
    # 创建脚本文件,并将脚本写入
    @staticmethod
    def psw_entrance_oper(device, x, y):
        file_name = "{}{}.mks".format(dc.CMDFILE_DIR, device)
        # 脚本内容,需要拼接点击的坐标
        script = """
        type=raw events
        count=10
        speed=1.0
        
        start data >>
        
        Tap({X}, {Y})
        Tap({X}, {Y})
        Tap({X}, {Y})
        Tap({X}, {Y})
        Tap({X}, {Y})
        Tap({X}, {Y})
        """.format(X=x, Y=y)
        # 将脚本内容写入文件
        with open(file_name, "w") as f:
            f.write(script)
        # 将脚本文件推送到设备上
        push_file_cmd = "adb -P 5037 -s {} push {} /sdcard".format(device, file_name)
        # 执行脚本文件,需要执行对应的设备
        exec_cmd = "adb -P 5037 -s {} shell monkey -f /sdcard/{}.mks  -v -v 1 >C:monkey.txt".format(device, device)
        os.system(push_file_cmd)
        os.system(exec_cmd)

此处代码为获取点击坐标及函数调用

# 获取坐标点击位置函数
def get_ele_min_ordin(loc):
    location = driver.find_element(*loc).location
    size = driver.find_element(*loc).size
    print(location)
    print(size)
    x_mid = location["x"] + int(size["width"] / 2)
    y_mid = location["y"] + int(size["height"] / 2)
    return x_mid, y_mid
login_title_mid_ordin = get_ele_min_ordin(login_title_loc)

print(datetime.datetime.now())
# 调用连续点击函数
ServiceUtils.psw_entrance_oper("X2P0215C07012968",login_title_mid_ordin[0],login_title_mid_ordin[1])
print(datetime.datetime.now())

 

初学者,思维不成熟,欢迎探讨,UI自动化还有很多东西要学习,(* ̄︶ ̄)。

 

最后

以上就是自觉月亮为你收集整理的Appium中无法实现短时快速点击解决方法的全部内容,希望文章能够帮你解决Appium中无法实现短时快速点击解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部