自动化 GUI 测试 Windows 资源管理器 Shell 扩展程序

3
我正在自动化 Windows 资源管理器扩展的 GUI 测试,类似 TortoiseSVN 菜单。我想做的是像 TortoiseSVN->显示日志那样的事情。
如果可能的话,我更喜欢 Ruby 解决方案,但也愿意采用语言不限的解决方案。
我在网上找到了 this,它很接近但并不完全符合我的要求。它似乎只有一些非级联菜单默认选项,不支持 shell 扩展。
任何建议将不胜感激。
2个回答

2
看一下AutoItX3。我认为你可以用它来实现你想要的功能。
你可以通过OLE与Ruby进行接口:
http://actsasbuffoon.wordpress.com/2008/12/30/introduction-to-autoitx3/ 编辑 我只是想在这里添加一下我如何进入资源管理器上下文菜单,也许有人能够找出如何进一步操作。我只是随便玩了一下看看有多难:
require 'win32ole'

shell  = WIN32OLE.new('Shell.Application')
folder = shell.NameSpace("D:\\")
files  = folder.Items
file   = nil

# Search for one specific file "test.rb"
files.each { |f| file = f if f.Name == "test.rb" }

# List all items in the context menu of test.rb
file.Verbs.each { |v| puts v.Name }

# At this point I ran out of ideas and couldn't figure out
# how to traverse into the submenus of the context menu...

你能否提供一些AutoIt中与上下文菜单中的shell扩展交互的示例?比如,右键单击C:\foo.txt并执行TortoiseSVN->Show Log(假设foo.txt在版本控制中)?大多数提供的示例似乎是GUI创建而不是操作。 - peakxu
@peak - 对不起,我不知道具体该怎么做。我只是尝试使用WIN32OLE来操作上下文菜单中的项目,但我无法弄清如何进入子菜单。 - Casper
谢谢你提供的AutoIt链接。虽然我还没有完全弄明白它,但它确实很有趣。 - peakxu
@peak - 没问题。我不太确定这是否是正确的方法,但我也添加了我正在使用的代码片段。 - Casper
这大致是我在帖子中提供的链接所得到的。它似乎允许像复制这样的命令访问,但不允许任何带有子菜单的命令,比如发送到。此外,一些 shell 扩展程序像 WinRar 的可以工作,但其他的像 TortoiseSVN 就不行。 - peakxu

1

你可能会对这种使用 Ruby 的方法感兴趣... 通过名为 win32-autogui 的 Ruby gem。它提供了一个测试 Windows GUI 应用程序的框架。将其与 Ruby 工具 RSpec 和 Cucumber 结合使用,可以为您提供一个强大的测试框架。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接