前言
分享下在使用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