我有一个软件包,它有一个用tclsh / wish编写的非常麻烦的GUI。我想通过终端控制软件并制作一些脚本来运行它。愿望GUI很长(超过37000行),所以我想避免详细阅读它并编写相应的命令行界面。假设我已经知道要按下的按钮序列和要填写的输入字段。有没有办法通过终端控制这个愿望GUI怪物?
通过以下方式调用GUI:
exec wish -f $PROGRAM_PATH/program.tcl -n program wish $PROGRAM_PATH $*
即使我删除了-f标志,它也不会接受任何终端输入或显示%提示符。我不理解-n标志后面的部分。如果删除它,程序运行相同。
即。只是打电话
wish $PROGRAM_PATH/program.tcl
做同样的事情。
我也尝试了-file标志并使用命令提供外部文件,但是希望在定义所有内部变量和例程之前尝试输入这些命令,因此导致无法识别的命令。
有人能指出一些有关愿望脚本的有用资料吗?
答案 0 :(得分:1)
如果你有一个程序prog.tcl
,它有一个输入字段.e和一个按钮.b:
#!/usr/bin/tclsh
package require Tk
set e {}
proc dump { } {
global e
puts $e
}
ttk::label .l -text Entry:
ttk::entry .e -textvariable e
grid .l .e
ttk::button .b -text button -command dump
grid .b -column 2
您可以使用这样的脚本来运行它:
#!/usr/bin/tclsh
package require Tk
source prog.tcl
set tv [.e cget -textvariable]
set $tv mydata
.b invoke
update
这只有在您拥有源时才有效。
不是生成事件以在输入字段中输入数据,而是更容易获取关联变量并将其设置为所需值。按钮很简单。还有组合框(下拉列表),复选框,刻度和单选按钮可供使用。我广泛使用这些方法进行自动化测试,并且可以正常使用。
您仍然需要阅读代码以找出条目和按钮名称。
如果您使用的是Windows,则还可以尝试使用autohotkey程序。