python控制鼠标,键盘,adb
听说某系因为奖学金互相举报,好像拿不到要命一样。不禁想到几天前老墨偷走丁胖子的狗,被丁胖子逮到。他面对警察的问询面不改色坚持自我,反而是怒气冲冲的丁胖子被警察认为是偷狗贼。我觉得这就是一种自信:凡事以自我为中心,当感性战胜理性,自己就是真理。
同学之间相识即是一场缘分,相互珍惜吧。
更新中…
1. pyautogui
运行时可能失去对鼠标键盘的控制。
解决:
windows:ctrl+alt+del
mac os:command+shift+option+q
1. 键盘相关
输出字符
import pyautogui
import time
time.sleep(8) # 有8秒的时间设置光标焦点
pyautogui.write('Hello, World!', interval=0.1) # 每个字符之间间隔0.1秒打印
pyautogui.write(['a','p','p','p','backspace','l','l','left','delete','e'], interval=0.1)
特殊python输入
enter 或\n | 键盘Enter | altleft ,altright | 键盘左右Alt |
backspace | 键盘Backspace | ctrlleft ,ctrlright | 键盘左右Ctrl |
delete | 键盘Del | shiftleft ,shiftright | 键盘左右shift |
esc | 键盘Esc | home,end | 键盘Home,End |
f1 ,f2 等 | 键盘F1 ,F2 等 | pageup,pagedown | 键盘PgUp,PgDn |
tab 或\t | 键盘Tab | up,down,left,right | 键盘上下左右 |
printscreen | 键盘PrtSc | winleft,winright | 左Win键以及右Win键 |
insert | 键盘Ins | command | Mac OS Command键 |
option | Mac OS option键 |
import pyautogui
import time
time.sleep(5) # 有5秒的时间设置光标焦点
#相当于组合键a+8,打印a8
pyautogui.keyDown('a')#按下按键不松开
pyautogui.press('8')#按下按键不松开
pyautogui.keyUp('a') #放开所按按键
#相当于组合键ctrl+f,开搜索框
pyautogui.hotkey('ctrl','f') #组合键打开搜索框
# 自动到下一个输入框
import pyautogui
import time
time.sleep(6) # 有6秒的时间设置光标焦点
pyautogui.typewrite('lihua\t')
pyautogui.typewrite('123456\t')
2. 鼠标相关
获取位置以及移动鼠标
import pyautogui
import time
time.sleep(2) #2秒程序开始
#目前计算机屏幕像素
Swidth,Sheight=pyautogui.size()
print(Swidth,Sheight)
# 获取鼠标光标位置
xloc,yloc=pyautogui.position()
print(xloc,yloc)
# 绝对位置移动光标
time.sleep(1)
pyautogui.moveTo(1500,600,duration=2)# 两秒时间移动鼠标移动到此
time.sleep(1)
pyautogui.moveRel(0,300,duration=1)#一秒时间鼠标光标相对于之前位置向下移动300
DOS界面在固定位置输出
import pyautogui
import time
time.sleep(2) #2秒程序开始
print('ctrl+c可结束本程序')
try:
while True:
xloc,yloc=pyautogui.position()
str1='x= '+str(xloc).rjust(4)+', y= '+str(yloc).rjust(4) #右对齐
print(str1,end='\r',flush=True)
#\r光标回到行首,flush=True立即将输出刷新到窗口,避免输出缓冲导致的消息延迟问题
time.sleep(1)
except KeyboardInterrupt:
print('Bye!')
按住与放开鼠标
import pyautogui
import time
time.sleep(5) #2秒程序开始
pyautogui.mouseDown(button='right') # 在鼠标光标位置按住鼠标右键
time.sleep(1)
pyautogui.mouseUp(800,300,button='right') # 放开后鼠标光标在(800,300)
拖动鼠标画图
import pyautogui
import time
time.sleep(3) # 这10秒需要绘图窗口取得焦点,选择画笔和选择颜色
pyautogui.click() # 单击设定绘图起始点
displacement = 10
while displacement < 300:
pyautogui.dragRel(displacement, 0, duration=0.2) #相对于原位置向右拖动,用时0.2秒
pyautogui.dragRel(0, displacement, duration=0.2) #相对于原位置向下拖动
pyautogui.dragRel(-displacement, 0, duration=0.2) #相对于原位置向左拖动
pyautogui.dragRel(0, -displacement, duration=0.2) #相对于原位置向上拖动
displacement += 10
窗口滚动
scroll(clicks=,x=,y=)
clicks是窗口滚动的单位数,x,y是鼠标光标移动位置,可以省略。
import pyautogui
import time
time.sleep(5)
pyautogui.scroll(30) # 往上卷动
time.sleep(3)
pyautogui.scroll(-30) # 往下卷动
time.sleep(3)
pyautogui.scroll(-60,x=500,y=800) #先将鼠标光标移动到(500,800)处然后才开始滚动,实测肉眼所见鼠标位置并未发生变化
3. 屏幕截取
import pyautogui
#方法一
screenImage = pyautogui.screenshot("out_1.jpg")
#方法二
screenImage.save("out_2.jpg")
# 截取一部分
screenImage = pyautogui.screenshot()
cropPict = screenImage.crop((960,210,1900,480))
#The box is a 4-tuple defining the left, upper, right, and lower pixel coordinate
cropPict.save("out_3.jpg")
out_1.jpg和out_2.jpg
out_3.jpg
2. pynput
略
3. adb相关
1. adb概念
adb:Android Debug Bridge,起到调试桥作用。
ADB可以直接操作管理手机模拟器或者真实的Android设备,它的主要功能有:
- 运行设备的shell
- 管理模拟器或设备的端口映射
- 计算机和设备之间的上传/下载文件
- 可以对设备的应用进行卸载安装等。
简而言之,adb可以让用户在电脑上对手机进行操作。
华为手机开发者模式开启允许usb调试,HDB连接设备,外部来源应用下载。
电脑需要在设备安全性->内核隔离->关闭内存完整性,然后重启。
跟着华为的操作走,后面如下图所示连接成功。
命令 | 说明 |
---|---|
adb -p 5037 start-server | 杀死当前adb服务并重启在5037端口 |
adb kill-server | 关闭adb服务 |
adb devices | 查看当前连接的设备 |
adb get-serialno | 查看设备号 |
adb shell | 进入shell,可使用ls ,cd ,exit 等命令 |
adb root | 获得root权限(安卓9以上不行) |
adb remount | 获取system文件的读写权限 |
adb -s 设备号 shell | 当同时连接了多台设备,指定一个设备号进行连接 |
adb shell pm list packages | 列出手机所装的所有app的包名。-f 额外显示安装路径。-e显示当前启用的包名 -d显示当前禁用的包名 -s显示系统应用包名 -3显示已安装的第三方包名 xxx需要过滤的包名 |
adb shell rm *.apk | 删除系统应用 |
adb install d:\xxx.apk | 通过命令安装安卓应用。 -r覆盖安装 -g安装时把所有权限打开 允许降级覆盖安装 |
adb uninstall apk 包名 | 通过命令卸载安卓应用。 -k卸载时保留该应用的数据和缓存 |
adb shell am force-stop 包名 | 强制退出该应用 |
adb push 本地路径 远程手机路径 | 上传文件 |
adb pull 远程路径 本地路径 | 下载文件 |
adb logcat | 查看日志 |
获取一些信息
adb shell getprop ro.product.model | 获取设备型号 |
---|---|
adb shell getprop ro.build.version.release | 获取Android系统版本 |
adb shell dumpsys activity |find 包名 | 查看前台应用包名,必须先启动app,适用于Android 8.0以上 |
adb shell cat /proc/meminfo | 获取手机内存信息 |
adb shell df | 获取手机存储信息 |
截屏相关
adb shell wm size | 查看屏幕分辨率 |
---|---|
adb shell screencap -p /sdcard/mms.png | 屏幕截图 |
adb shell screencap -p /sdcard/screenshot.png | 屏幕截图 |
adb shell screenrecord 存放路径/xxx.mp4 | 录屏,命名以.mp4结尾 |
adb shell screenrecord --time-limit 10 存放路径/xxx.mp4 | 录屏时间为10秒 |
2. 略
赶作业中。。。