发现一个xdotool,是个神器

2023-11-04

xdotool是linux下,类似”按键精灵“的工具,在一些自动测试时,经常用到

以上为xdotool正常使用

比如说:

模拟击键a

xdotool key a

模拟两个键alt+tab

xdotool key alt+Tab

自动输入word

xdotool type 'word'

模拟鼠标移动+点击,这会让鼠标移动到(x,y),然后点击鼠标左键。“1”代表鼠标左键,“2”则是滚轮,“3”则是右键。

xdotool mousemove 655 320 click 1

以上是比较基础的应用,也很常用,特别是在模拟一些操作的时候,非常好用

其实,xdotool还可以做一些其他功能,有时候起到巧妙作用

比如说 查找某个进程,有哪些窗体

xdotool search "XXXX"
如果存在,会列出该进程下所有窗体的编号(当然编号看起来不方便,但好歹有)

彷佛以下这条命令更加实用点
xdotool search "XXXX" getwindowname %@

这样可以显示所有窗体的title(如果不加%@ 则显示第一条,反而不是很好用)
 

还可以以下一些命令:

xdotool search . getwindowpid %@

//查找所有窗体,所在的 进程号(进程号一样,说明是同一个进程)

xdotool search . getwindowname %@

//查找所有窗体,并显示窗体的title

以下内容是抄的,以便不时之需

xdotool key [key name]
xdotool key alt+Tab
xdotool type ''
xdotool search --name [window name] key [key name] 查找窗口并按键
xdotool mousemove x y
xdotool mousemove x y click 1  1左键 2滚轮 3右键 4向上滚 5向下滚
xdotool search --title "..."
xdotool key Return 模拟回车键
xdotool keydown/keyup super 按下Win键不放
xdotool key Super_L 左Win
watch -n 10 xdotool key Return 搭配watch使用,实现循环10秒敲击一次回车
xdotool search "Firefox"  获取窗口名称
xdotool getwindowname 39845889 在以上指令列出的ID中获取容器名称
xdotool getactivewindow 获取当前激活的窗口
xdotool windowminimize 最小化窗口
xdotool windowminimize $(xdotool getactivewindow) 最小化当前窗口
xdotool key ctrl+l BackSpace 点击ctrl+l,然后是BackSpace键
xdotool search --name gdb key ctrl+c 在窗口名为gdb上点击ctrl+c
xdotool mousemove_relative 10 10 鼠标相对移动
xdotool mousemove_relative --sync 10 10 异步鼠标相对移动
xdotool click -repeat 1 3  鼠标右键点击1次
xdotool mousedown/mouseup
xdotool getmouselocation 获取鼠标位置
xdotool getmouselocation --shell 获取鼠标位置(便于获取数据)
1 eval $(xdotool getmouselocation --shell)
2 echo $X,$Y
即可获得X,Y位置
xdotool getactivewindow windowmove 10 10 移动当前窗口位置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

发现一个xdotool,是个神器 的相关文章

  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • Qt 安装程序框架 - 如何在卸载时仅删除某些文件和文件夹

    我使用 Qt 安装程序框架 如何确保在卸载时仅删除某些文件或文件夹 而不是像当前那样删除安装文件夹中的所有文件 先感谢您 您可以覆盖默认行为component createOperations对于卸载程序 然后使用手动指定每个卸载路径com
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 为什么 QGraphicsWidget 的选择边框在 QGraphicsScene 中不可见?

    我已经通过一个小部件添加到图形场景 QGraphicSscene QGraphicsProxyWidget 问题是 当我选择该项目时 它被选中 但选择边框不可见 这是代码 QDial dial new QDial Widget dial g
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • 来自另一个类的 Qt C++ GUI 调用

    我通过 gui 拖放创建了一个按钮和一个文本浏览器 UI 以及单击按钮功能是在 mainwindow cpp 中创建的 有一个 main cpp 但这是无关紧要的 因为在单击开始按钮之前程序不会启动 include mainwindow h
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • 如何在qt中创建正确的退出按钮

    我正在尝试创建一个退出按钮来正确关闭我在 QT 中制作的 GUI 我尝试通过以下方式执行此操作 include
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b

随机推荐

  • 基于 Vue 和 SpringBoot 的医院门诊预约挂号系统源代码+数据库

    基于 Vue 和 SpringBoot 的医院门诊预约挂号系统 完整代码下载地址 基于 Vue 和 SpringBoot 的医院门诊预约挂号系统源代码 数据库 软件简介 本软件是 基于 Vue 的医院门诊预约挂号管理系统 主要包含数据中心
  • 故障注入测试(Fault Injection Test)方法

    这周新一篇技术文章来袭 今天要分享的技术文章是 故障注入测试 Fault Injection Test 方法 过去只被归类为机械装置的汽车 现在变成了包括许多电子控制装置在内的尖端产品 最近上市的汽车上基本上都搭载了100个以上的控制器 由
  • 【pycharm】Cannot find reference ‘XXX‘ in ‘__init__.py‘ 解决办法

    Cannot find reference XXX in init py 解决办法 File gt Editor gt Inspections 把Unresolved references的 取消掉
  • C#中实现简单文件读写(附源代码)

    主要代码 using System IO Read File private void button1 Click object sender System EventArgs e try openFileDialog1 Filter tx
  • 从一个类中访问另一个类中的私有方法

    一般情况下我们无法在一个类中去访问另外一个类中非公有的方法 但有时候我们确实需要调用另外一个类中的私有方法 该怎么办呢 有两种方法可以解决 一个是利用反射 另一个就是用委托 我们可以看个Demo 1 namespace ReflectTes
  • Lua快速入门(1)

    Lua快速入门 LuatOS 在线模拟 lua在线测试 1 输出函数 print Hello World 2 变量 2 1 全局变量 局部变量和nil 通常定义的变量都为全局变量 加上local仅能在当前作用域下生效 没被赋值的变量都为ni
  • CSS——层次选择器

    文章目录 1 后代选择器 2 子选择器 3 向下选择器 4 通用选择器 1 后代选择器 在某个标签后面的所有子标签 后代选择器 body p background 03f39f 2 子选择器 后面一个 body gt p backgroun
  • QListWidget和QListWidgetItem的简单使用

    QListWidget可以显示一个清单 清单中的每个项目是QListWidgetItem的一个实例 每个项目可以通过QListWidgetItem来操作 可以通过QListWidgetItem来设置每个项目的图像与文字 下面说明3个例子 一
  • 美国数学家维纳智力早熟,11岁就上了大学,他曾在1935-1936年 应邀参加中国清华大学讲学,一次他参加某个重要会议,年轻的脸孔 引人注意,于是有人询问他的年龄,他回答说“我年龄的立方是个4位数

    package day01 import java util HashSet import java util Set 标题 猜年龄 美国数学家维纳智力早熟 11岁就上了大学 他曾在1935 1936年 应邀参加中国清华大学讲学 一次他参加
  • python __file__ 内置属性

    file 内置属性可以获取当前方法所在文件的路径 import random print random file usr lib python3 8 random py 由于import导入的时候是先判断当前路径下有没有import的文件
  • 计算方法-数值积分与微分

    文章目录 一 数值积分的基本思想 代数精度 二 插值型求积公式 插值型求积公式的基本思想 求积公式 插值型求积公式的代数精度 问题 三 牛顿 柯特斯求积公式 牛顿 柯特斯求积公式的引出 已知条件 公式 为什么提出公式中的 b a 柯特斯系数
  • Python——tensorflow2.8猫狗识别

    很早就想做这个猫狗识别的程序 所以跟着唐宇迪教程做了一遍 中间部分参数做了修改 后面预测部分用自己的猫猫图片做了预测 虽然有点问题 但最后还是可以识别出来 问题不大 下面对程序几个部分进行讲解 最后会附上整个程序的附件 一 数据处理 整个训
  • 三步使用bert搭建文本分类器

    不说废话 直接三步搭建最简单的bert文本多标签分类器 1 去官网https github com google research bert 下载一个bert模型 2 搭建bert service https github com hanx
  • 哈希学习简介

    一 背景介绍 1 首先介绍一下最近邻搜索 最近邻搜索问题 也叫相似性搜索 近似搜索 是从给定数据库中找到里查询点最近的点集的问题 给定一个点集 以及一个查询点q 需要找到离q最近的点的集合 在大规模高维度空间的情况下 这个问题就变得非常难
  • android 进程监控 top

    adb shell top h top h Usage top m max procs n iterations d delay s sort column t h m num Maximum number of processes to
  • mybatis-plus自定义分页实现 (精)

    添加pom依赖
  • EVE-NG初始安装及配置_笔记

    1 安装VMware 2 导入EVE的ova镜像 3 初始化配置 ubantu server linux 设置root密码 域名 主机名 IP地址 root eve 123456 123456 主机名 域名 IP地址获取 DHCP STAT
  • mysql数据库管理-mysql分区表管理

    1 分区概述 无论是哪种 MySQL 分区类型 要么分区表上没有主键 唯一键 要么分区表的主键 唯一键都必须包含分区键 也就是说不能使用主键 唯一键字段之外的其他字段分区 例如 emp 表的主键为id字段 在尝试通过store id字段分区
  • React实现拖拽效果

    最近遇到一个拖拽的业务 那么我们需要了解一下拖拽的流程 让我们来实现这个组件吧 一 拖拽流程 编写项目之前我们先了解一下拖拽大致的流程 以及触发的事件 其实拖拽一共分为三个步骤 1 onmousedown 拖拽事件的最开始 在这个简单我们要
  • 发现一个xdotool,是个神器

    xdotool是linux下 类似 按键精灵 的工具 在一些自动测试时 经常用到 以上为xdotool正常使用 比如说 模拟击键a xdotool key a 模拟两个键alt tab xdotool key alt Tab 自动输入wor