- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python 随机按键模拟2小时由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Android终端(车载,手机)等, 。
需要模拟进行随意进行各类按键(车载方向盘按键,手机硬按键)的操作, 测试系统对随机按键事件的响应稳定性,一般测试2小时.
一般是用adb shell input keyevent + KeyCode 来模拟按键事件。 比如adb shell input keyevent 24 可以模拟“音量加键”, 以下是比较常用的几个按键的键值表.
。
KeyCode | 释义 |
---|---|
3 | Home键 |
4 | 返回键 |
5 | 电话拨号键 |
24 | 音量加键 |
25 | 音量减键 |
26 | 电源键 |
27 | 照相机启动键 |
87 | 多媒体下一曲键 |
88 | 多媒体上一曲键 |
91 | 音量静音键 |
。
批量处理脚本的特点是:批量顺序执行语句 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# coding=utf-8
import
os
import
time
import
random
TIMEOUT
=
7200
# 2小时(7200s) 常量
once_time
=
time.time()
# 获取当前时间戳,并保存到一个变量
keycode_dict
=
{
3
:
"HOME键"
,
4
:
"返回键"
,
5
:
"电话拨号键"
,
24
:
"音量加键"
,
25
:
"音量减键"
,
26
:
"电源键"
,
27
:
"照相机启动键"
,
87
:
"下一曲键"
,
88
:
"上一曲键"
,
91
:
"静音键"
}
# 循环获取当前时间,与once_time变量做时间戳做减法
while
time.time()
-
once_time <
=
TIMEOUT:
# 随机选择字典的某个“键”
keycode
=
random.choice(
list
(keycode_dict.keys()))
command
=
"adb shell input keyevent %s"
%
keycode
print
(
"成功按下了%s"
%
keycode_dict[keycode])
os.system(command)
time.sleep(
0.5
)
# 间隔0.5s,再进行下一次按键模拟
print
(
"已经进行了 %d 秒..., 一共需要测试 %d 秒"
%
(time.time()
-
once_time, TIMEOUT))
os.system(
"pause"
)
|
看哪些代码块,可以组成一个具体的功能, 这个案例,可以用input_keyevent(), 代表输入按键事件的功能函数, 这个函数可以接收参数输入,可以指定输入多久的按键事件.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# coding=utf-8
import
os
import
time
import
random
def
input_keyevent(timeout):
once_time
=
time.time()
# 获取当前时间戳,并保存到一个变量
keycode_dict
=
{
3
:
"HOME键"
,
4
:
"返回键"
,
5
:
"电话拨号键"
,
24
:
"音量加键"
,
25
:
"音量减键"
,
26
:
"电源键"
,
27
:
"照相机启动键"
,
87
:
"下一曲键"
,
88
:
"上一曲键"
,
91
:
"静音键"
}
# 循环获取当前时间,与once_time变量做时间戳做减法
while
time.time()
-
once_time <
=
timeout:
# 随机选择字典的某个“键”
keycode
=
random.choice(
list
(keycode_dict.keys()))
command
=
"adb shell input keyevent %s"
%
keycode
print
(
"成功按下了%s"
%
keycode_dict[keycode])
os.system(command)
time.sleep(
0.5
)
# 间隔0.5s,再进行下一次按键模拟
print
(
"已经进行了 %d 秒..., 一共需要测试 %d 秒"
%
(time.time()
-
once_time, timeout))
input_keyevent(
7200
)
os.system(
"pause"
)
|
1.以"万物皆可归类"的思想, 先抽象化出一个类来,类名一般建议用"名词", 所以我们命名为"KeyeventInputter",代表按键事件输入器, 且一般要驼峰式(首字母大写)来规范类的命名.
2.养成良好的类的初始化(__init__)的习惯,初始化过程中, 可以定义属性,self.keycode_dict.
3.定义方法(函数), input_keyevent函数。 4.类是一个抽象的事物, 必须实例化成具体的对象后,才能进行调用, 所以我们实例化并命名成了k_obj, 表明是一个对象。 5.实例化成具体对象后, 对象就可以调用input_keyevent这个函数了.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# coding=utf-8
import
os
import
time
import
random
class
KeyeventInputter():
def
__init__(
self
):
self
.keycode_dict
=
{
3
:
"HOME键"
,
4
:
"返回键"
,
5
:
"电话拨号键"
,
24
:
"音量加键"
,
25
:
"音量减键"
,
26
:
"电源键"
,
27
:
"照相机启动键"
,
87
:
"下一曲键"
,
88
:
"上一曲键"
,
91
:
"静音键"
}
def
input_keyevent(
self
, timeout):
once_time
=
time.time()
# 获取当前时间戳,并保存到一个变量
# 循环获取当前时间,与once_time变量做时间戳做减法
while
time.time()
-
once_time <
=
timeout:
# 随机选择字典的某个“键”
keycode
=
random.choice(
list
(
self
.keycode_dict.keys()))
command
=
"adb shell input keyevent %s"
%
keycode
print
(
"成功按下了%s"
%
self
.keycode_dict[keycode])
os.system(command)
time.sleep(
0.5
)
# 间隔0.5s,再进行下一次按键模拟
print
(
"已经进行了 %d 秒..., 一共需要测试 %d 秒"
%
(time.time()
-
once_time, timeout))
k_obj
=
KeyeventInputter()
k_obj.input_keyevent(
7200
)
os.system(
"pause"
)
|
确保Android设备通过USB线与电脑连接了,adb设备有效连接,以上代码的3种实现形式都可以直接运行,比如保存为random_keyevent.py并放在桌面,建议python random_keyevent.py运行,当然也可以双击运行.
运行效果如下:
以上就是Python 随机按键模拟2小时的详细内容,更多关于Python 随机按键模拟的资料请关注我其它相关文章! 。
原文链接:https://www.zipython.com/#/detail?id=635502eeeae5455c9ba064411cd5617d 。
最后此篇关于Python 随机按键模拟2小时的文章就讲到这里了,如果你想了解更多关于Python 随机按键模拟2小时的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我对 JavaScript 上的 onkeypress 事件有疑问。 是否可以仅检测 Cntl 键或 Alt 键?此时,如果同时按下 Cntl 和 m,则 onkeypress 事件可以触发单击。是否
我想知道按键中允许使用什么样的字符。它是否也生成一个符号下划线(_)?我总是得到一个带有 - 字母的按键。 最佳答案 按键使用修改过的 Base64 字母表: -0123456789ABCDEFGHI
我有以下格式的(格式错误的DITA)XML: BLARG BLARG Definition BLARG2 BLARG2 Definition BLARG3 BLARG3 Definition
我有两个单独的对象数组,如果特定键值匹配,我需要将它们合并。分析数据后可能更有意义: 数组 1 let categories = [ { id: 5, slug: 'category-5',
由于我是新手,所以我的低效编码给大家带来了巨大的麻烦,对此我提前表示歉意。 我正在尝试在 HTML5 Canvas 上使用 Javascript 制作一个非常基本的游戏,但我似乎找不到一种简单的方法来
我试图找出将多维数组中的对象 id 属性映射到共享相同 id 的另一个数组中的对象值的最佳方法。 举个例子,我有一个像这样的genre_ids数组: 0: {id: 1, name: 'sci-fi'
我有一个游戏,当按下一个键时,您可以通过将子弹添加到 Controller 类来发射子弹。这是代码来自 KeyPressed(); else if (key == KeyEvent.VK_Q && !
我想比较两个字典的长度以及每个字典中每个键、值对的长度。如果在查找时没有匹配项,我还需要能够打印出来。 我当前的代码似乎传递了长度标准,但在尝试匹配元素时失败: assert_that(len(mod
我正在寻找一种跨平台(Win 和 MacOS)方法来检测 C# 中 OpenGL 应用程序的按键。 以下有效,但仅适用于字母数字字符。 protected override void OnKeyPre
我正在 try catch 按键事件(向上和向下翻页),但根本没有收到任何按键事件。这是相关代码:构造函数: private MainLayout() { imageView = new Im
$(el).bind('blur keypress', function(event){ if(event.type == 'keypress' && event.keyCode != 13) r
我有这段代码: while (SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN) { switch(event.key.keys
我正在使用下面的代码: $(document).keypress(function (e) { if (e.which === 68 || e.which === 100) {
我正在用 html 和 javascript 制作游戏。只是为了澄清,这不是重复或任何东西。没有什么可以给我我需要的答案。另外,在解释之前,我想说我对按键监听器没有任何问题,我的游戏知道何时按下按键以
我正在尝试用 Javascript 制作游戏,但目前我已经陷入停滞。我正在尝试检测按键并检查它们是否不断按下以移动 Angular 色。这是我正在使用的代码: var THREE; var keys;
我得到了多维数组。我想从每个子数组中删除/取消设置索引为 1 的值。我的数组 $data。 Array ( [3463] => Array ( [0]
我正在设计一个基于网络的会计软件。例如,每当用户按 N 键时,我想打开“新会计凭证”。并在他/她按下 S 键时打开“设置”。 我看到了一些基于 JavaScript 和 jQuery 的脚本。但它们并
阅读此主题后: Keypress events stopped working outside of "input" elements in Meteor after update to 0.5.2
所以,当我按下按钮 1“1 PLAY/STOP”时,按钮变成绿色,当我再次按下它时它会去除颜色。 如果我按下 button2“2 PLAY/STOP”,同样的事情会发生。 如果两个按钮之一播放而我按下
非常直接的问题。 只想按一个键盘键。像输入一样,使用 pywin auto。我不想在任何应用程序窗口的上下文中按下它。 只是键盘键的原始按键,如 a 或 enter 或退格。 最佳答案 只需使用 #
我是一名优秀的程序员,十分优秀!