任何人都可以支持我吗?
i在具有相似配置的2台机器中安装相同的步骤。但是一台机器起作用。一台机器在导入自动通讯时失败。
查看骑行日志 - 错误显示:
20190322 16:34:04.751 [WARN]: Importing test library "AutoItLibrary" failed
Traceback (most recent call last):
Initializing test library 'AutoItLibrary' with no arguments failed: com_error: (-2147221008, 'CoInitialize has not been called.', None, None)
Traceback (most recent call last):
File "C:Python27libsite-packagesrobotidelibrobotrunningtestlibraries.py", line 167, in _get_instance
return libcode(*self.positional_args, **dict(self.named_args))
File "C:Python27libsite-packagesAutoItLibrary__init__.py", line 84, in __init__
self._AutoIt = win32com.client.Dispatch("AutoItX3.Control")
File "C:Python27libsite-packageswin32comclient__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:Python27libsite-packageswin32comclientdynamic.py", line 108, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:Python27libsite-packageswin32comclientdynamic.py", line 85, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
File "C:Python27libsite-packagesrobotidespeclibrarymanager.py", line 87, in _fetch_keywords
return get_import_result(path, library_args)
File "C:Python27libsite-packagesrobotidespeclibraryfetcher.py", line 24, in get_import_result
lib = robotapi.TestLibrary(path, args)
File "C:Python27libsite-packagesrobotidelibrobotrunningtestlibraries.py", line 54, in TestLibrary
lib.create_handlers()
File "C:Python27libsite-packagesrobotidelibrobotrunningtestlibraries.py", line 100, in create_handlers
self._create_handlers(self.get_instance())
File "C:Python27libsite-packagesrobotidelibrobotrunningtestlibraries.py", line 159, in get_instance
self._libinst = self._get_instance(self._libcode)
File "C:Python27libsite-packagesrobotidelibrobotrunningtestlibraries.py", line 169, in _get_instance
self._raise_creating_instance_failed()
File "C:Python27libsite-packagesrobotidelibrobotrunningtestlibraries.py", line 314, in _raise_creating_instance_failed
% (self.name, args_text, msg, details))
20190322 16:34:05.048 [INFO]: Found Robot Framework version 3.1.1 from C:Python27libsite-packagesrobot.
20190322 16:34:05.048 [INFO]: Started RIDE 1.7.3.1 using python version 2.7.14 with wx version 4.0.4 in win32.
我有相同的问题,并用32位库进行了测试。
@echo off
setlocal
set "jsfile=%temp%autoit3x_comtest.js"
(
echo try {
echo oAutoIt = new ActiveXObject("AutoItX3.Control"^);
echo }
echo catch (e^) {
echo WScript.Echo("Catch: " + e^);
echo WScript.Quit (1^);
echo }
) > "%jsfile%"
set "system=System32"
if /i not "%PROCESSOR_ARCHITECTURE%" == "x86" (
set "system=SysWOW64"
)
echo Using: %system%
"%SYSTEMROOT%%system%cscript.exe" //nologo "%jsfile%"
if not errorlevel 1 (
echo No error detected.
goto :done
)
>nul 2>nul net session
if errorlevel 1 (
if not exist "AutoItX3.dll" if not exist "AutoItX3_x64.dll" goto :done
echo Require to run as admin to register any dlls.
goto :done
)
if exist "AutoItX3.dll" (
echo Register AutoItX3.dll
for %%A in ("/u" "") do (
"%SYSTEMROOT%%system%regsvr32.exe" /s %%~A "AutoItX3.dll"
)
)
if exist "AutoItX3_x64.dll" if exist "%SYSTEMROOT%SysWOW64" (
echo Register AutoItX3_x64.dll
for %%A in ("/u" "") do (
"%SYSTEMROOT%System32regsvr32.exe" /s %%~A "AutoItX3_x64.dll"
)
)
:done
del "%jsfile%"
我怀疑未注册autoitx3.dll,输出一个com错误。
上面的代码是批处理文件,因此您可以将其保存为例如autoitx_comtest.cmd
。它使用JScript尝试加载AutoItX3.Control
对象。如果它失败并且脚本作为admin运行,则如果存在目录中的DLL,则将注册DLL。
自动列表通常仅提供32位DLL,即AutoItX3.dll
。如果您也想要64位,请将AutoItX3_x64.dll
添加到要注册的目录中。如果已安装了autoIt3,则可能已经由安装程序注册了DLL。
如果安装了Python 64位,则可能需要使用AutoItX3_x64.dll
使用自动纤维,因为64位可执行文件无法使用32位DLL,反之亦然。
注意:如果您知道如何使用regsvr32
注册DLL,则可以使用它而不是批处理。
与其他DLL
兼容使用AutoItX3.dll
的3.3.6.0版本与自动纤维的兼容性。我建议使用来自存档版本的DLL并下载autoit-v3.3.6.0-sfx.exe获取DLL。在最新的AutoITX版本中,删除了一些方法,例如RegRead
。另外,自动释放作者可能不支持3.3.6.0以外的任何版本。
如果已安装了最新的自动安装程序,则可能需要解开这些DLL并确保注册3.3.6.0 DLL以兼容。我不确定您是否可以拥有不同的DLL版本同时在同一系统上注册。
最新版本的AutoItx DLL可能会很好地工作,但是文档中列出的自动列表关键字,例如Reg Read
,Reg Write
,其他一些可能无法使用,因为这些方法已从最新版本中删除。
最新vs兼容性,您的选择。
我也有同样的问题。
安装autoit3并重新启动清除了乘车的错误。