自动化测试工具 说一说 AutoItLibrary 安装的坑

齐涛-道长 · 2015年12月28日 · 最后由 奔波灞波奔 回复于 2016年01月11日 · 1989 次阅读

AutoItLibrary 是什么

官网的介绍是:
AutoItLibrary is a Python keyword library that extends Robot Framework by providing keywords based on the COM interface to AutoIt, a freeware tool for automating the Windows GUI.
实际上 AutoItLibrary 是一个 Robotframework 的测试库,用来进行 Windows 的 GUI 的自动化测试。它的底层是基于 AutoIt 这个工具。
AutoIt 具体介绍请参考:https://www.autoitscript.com/site/

安装报错

最近经常发现有同学在安装 AutoItLibrary 的时候出现报错,特别是 Windows7 下面,如图:

从描述看,注意这里第二行提示 “Don't think we need to unregister the old one...”,那么看起来是因为之前已经安装过一个了?我们来看一下安装时候的源码是怎么样的:

大概在第五、六行这里(忽略注释来算行数),有一段代码:

if os.path.isfile(os.path.join(get_python_lib(), "AutoItLibrary/lib/AutoItX3.dll")) :
print "Don't think we need to unregister the old one..."

我们看一下这段代码,get_python_lib() 就是获取到 python 的 lib/site-packages 的目录,后面是 AutoItLibrary 的一个 AutoItX3.dll,最终就是判断在 site-packages 目录下的 AutoItLibrary/lib 下是否存在 AutoItX3.dll 文件,如果存在那么就会提示我们刚才看到的那一句话。
所以第一个想到的是删掉那个文件,但是删掉这个文件后,其实还是报错的。

报错信息一样,就少了那一句。所以看起来根本问题还是在最后那句 “returned non-zero exit status 5”
在网上搜了很多地方,最后看到一个比较靠谱的地方,解决方案是这么说的:

Open command shell as Administrator. Click on “Start”, type “cmd”, right click > “Run as Administrator“).

也就是要用管理员来启动命令行,点击开始,输入 cmd,然后在弹出的程序上点击右键,选择以管理员身份运行。

然后在这个 cmd 命令行中进入 AutoItLibrary 的安装目录,重新运行 python setup.py install 来进行安装,问题解决。

问题总结

以上是我找到这个问题解决方案的过程,总而言之就是先根据错误信息找到问题原因或出处,然后判断什么情况下导致这个错误信息提示出来,有可能有多个错误,一个个排除掉,直到最后一个解决。要学会顺藤摸瓜,一点点的找下去,虽然可能会慢一些,但是最终解决问题之后,你会对这个问题理解更深刻。
此外还要学会科学上网会搜索,会科学上网大家都懂的,会搜索怎么解释呢,我前面说的搜索了很多地方,其实都是在谷歌上搜索的,但是并没有直接找到结果,最后我是在 stackoverflow 里专门搜索了一下,第一次搜索 “returned non-zero exit status 5”,发现有很多不相关的内容,然后我搜索 “returned non-zero exit status 5 autoit”,结果没有搜到,然后我去掉了 5 再搜索 “returned non-zero exit status autoit”,就只有一个结果,刚好在里面找到了这个答案。实际上谷歌第一页最后一个连接也算找到了结果,只是没有说的那么明确(地址见:https://code.google.com/p/robotframework-autoitlibrary/issues/detail?id=15

深圳敏捷之旅

2015Teambition 深圳敏捷之旅即将在2016年1月10日在深圳举办,现在报名进行中
报名地址:http://event.3188.la/238415971

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

以前也经常遇到这样的问题,除了告诉你外部命令调用出错外就没有其他详细信息了。

对于这种问题,我会把命令单独拿出来自己跑一下,看看它的实际输出。

我试了下 regsvr32.exe 这个命令,发现它的 /s 表示不输出任何信息。安装脚本应该是基于简便和难以捕获异常需不需的考虑(这个命令的输出基本是弹框形式的,不知道 subprocess 是否能处理),用了 /s ,只剩下 Return code ,所以出错后找解决方案时并不方便。

去掉 /s 后手动运行这个命令,会有这个错误:

拿着错误码去 google(cmd 0x80070005),前几条结果里面就有提到了用管理员运行 cmd 。

按照 LZ 的说法,确实能成功。最近正在看 LZ 的 RF 的教程,

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册