以编程方式与X应用程序进行交互


8

我有一个使用GTK +构建的应用程序。该应用程序具有非常简单的界面。启动时,将始终打开同一窗口,其中包含一些输入控件。

我们要编写一个脚本以在几个字段中填写文本,选中一个复选框,然后单击一个按钮。非常简单,如果有该应用程序的命令行版本可用,则很容易做到(但不是)。

以编程方式与X应用程序进行交互的最佳方式是什么?

Answers:


9

看看xdotool(Ubuntu手册页)。

它非常强大,应该能够执行您需要的任何操作。

http://www.semicomplete.com/projects/xdotool/xdotool.xhtml


我认为xdotool仅在实际紧急情况下才应考虑使用!用严肃的东西写剧本xdotool比痛苦而不是乐趣。在尝试之前,请xdotool询问开发人员该应用程序是否具有dbus接口。那会使您的计划简单得多。
user1146332 2013年

1
@ user1146332我正在毫无问题地xdotool用于各种任务。我不知道痛是一种快乐,是什么。
LinuxSecurityFreak

我在类似的情况下使用xdotool,令人痛苦的一件事是它无法查看向其发送事件的窗口。一个问题是不确定的时间安排:如果X程序需要一些时间来处理一个事件,而在下一个事件来得太早时会忽略下一个事件,则需要添加大量的睡眠暂停,但是您永远都不知道足够长的时间。
汉斯·马丁·莫斯纳

3

xtexautomation的一部分是另一个工具,您可以使用该工具使用XTest扩展来生成伪造的X11输入。

从首页:

从命令行控制X以获取脚本,然后执行“可视抓取”以在屏幕上查找内容。控制界面允许鼠标移动,单击,按钮上/下,键上/下等,并使用XTest扩展名,因此当应用程序忽略发送的事件时,您不会遇到xse遇到的烦人问题。visgrep程序在图像内部查找图像并报告坐标,从而使程序可以在屏幕上单击以找到按钮等。


0

Xte有效,但确实很旧。xdotool至少正在积极开发中。

我做了很多有关生成X Windows事件的研究,名义上是开发一个可以键入字符串的键盘宏程序,或者是通常不允许您使用粘贴的应用程序中的剪贴板。

X窗口事件处理说明... http://www.ict.griffith.edu.au/anthony/info/X/event_handling.txt

键盘宏(使用xte或xdotool http://www.ict.griffith.edu.au/anthony/software/#keyboard_macro


链接中的详细信息,为什么有人拒绝了这个答案?+1,但最好不要在本文开头包含应用程序摘要。
Badr Elmers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.