python控制鼠标,键盘,adb

发布于:2024-11-28 ⋅ 阅读:(7) ⋅ 点赞:(0)

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 altleftaltright 键盘左右Alt
backspace 键盘Backspace ctrlleftctrlright 键盘左右Ctrl
delete 键盘Del shiftleftshiftright 键盘左右shift
esc 键盘Esc home,end 键盘Home,End
f1f2 键盘F1F2 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设备,它的主要功能有:

  1. 运行设备的shell
  2. 管理模拟器或设备的端口映射
  3. 计算机和设备之间的上传/下载文件
  4. 可以对设备的应用进行卸载安装等。

简而言之,adb可以让用户在电脑上对手机进行操作。

华为手机开发者模式开启允许usb调试,HDB连接设备,外部来源应用下载。

电脑需要在设备安全性->内核隔离->关闭内存完整性,然后重启。

跟着华为的操作走,后面如下图所示连接成功。

在这里插入图片描述

命令 说明
adb -p 5037 start-server 杀死当前adb服务并重启在5037端口
adb kill-server 关闭adb服务
adb devices 查看当前连接的设备
adb get-serialno 查看设备号
adb shell 进入shell,可使用lscdexit等命令
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. 略

赶作业中。。。

参考

我心中的王者:Python-用Python控制鼠标、屏幕与键盘 andyyah晓波

ADB安装及使用详解 程序员-老K