Airtest模拟输入太慢?换复制粘贴


前言

分享下在使用Airtest过程中碰到的一个问题关于模拟输入,我在进行业务测试的时候需要输入一段JS代码(在浏览器的console),用 Text() 或者 keyevent() 输入一段带有特殊符号/括号/花括号的代码过程中出现报错,由于对模拟键盘事件业务的不熟悉,去百度后找到的方法并不太适合我,代码有点长,后面想着能不能把我要输入的代码写进粘贴板,直接粘贴就好了呢?接下来就有了下面的事


Windows使用pywin32

1、Python 安装 pywin32

pip install pywin32

2、Python复制代码

# win32clipboard:复制粘贴
import win32clipboard
import win32con
 
# 打开粘贴板
win32clipboard.OpenClipboard()
# 清空粘贴板
win32clipboard.EmptyClipboard()
# 传入需要写进的数据
win32clipboard.SetClipboardData(win32con.CF_TEXT, "test something".encode("gbk"))
# 关闭粘贴板
win32clipboard.CloseClipboard()

3、实例

def copy_code():
    data = '''
    !function() {
    function e() {
        var e, t = "http://isphijack.baidu.com/index.php?cb=isp_hijack", i = [];
        if (top.location != self.location) {
            try {
                for (var n = top.document.getElementsByTagName("frame"), o = top.document.getElementsByTagName("iframe"), s = 0; s < n.length; s++)
                    i.push(n[s].getAttribute("src"));
                for (var s = 0; s < o.length; s++)
                    i.push(o[s].getAttribute("src"))
            } catch (r) {}
            ns_c({
                fm: "frm",
                top: encodeURIComponent(top.location.href),
                furls: encodeURIComponent(i.join("|"))
            }),
            i && (e = document.createElement("script"),
            e.src = t + "&urls=" + encodeURIComponent(i.join("|")) + "&t=" + +new Date,
            document.body.appendChild(e))
        }
    }
    $(e)
}();
try {
    window.console && window.console.log && (console.log("每一个星球都有一个驱动核心,\n每一种思想都有影响力的种子。\n感受世界的温度,\n年轻的你也能成为改变世界的动力,\n百度珍惜你所有的潜力。\n你的潜力,是改变世界的动力!\n\n"),
    console.log("%c百度2021校园招聘简历投递:https://talent.baidu.com/external/baidu/campus.html", "color:red"))
} catch (e) {}'''.encode('gbk')
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(win32con.CF_TEXT, data)
    win32clipboard.CloseClipboard()
    # 粘贴
    keyevent('^+v')
    # 回车
    keyevent('{ENTER}')
	

Mac使用subprocess

import subprocess

# 复制
def copy(text):
  p = subprocess.Popen(["pbcopy", "w"], stdin=subprocess.PIPE, close_fds=True)
  # 内容复制
  p.communicate(input=text.encode("utf-8"))
   
# 粘贴  
def paste():
  p = subprocess.Popen(["pbpaste", "r"], stdout=subprocess.PIPE, close_fds=True)
  stdout, stderr = p.communicate()
  #返回粘贴内容
  return stdout.decode("utf-8") 

各位的关注、点赞、收藏是对我最大的支持!
欢迎小伙伴关注微信公众号ID:gameTesterGz
微信二维码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

游戏测试-AJian

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

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

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

打赏作者

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

抵扣说明:

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

余额充值