从python脚本执行Robot Framework文件

use*_*074 3 python python-2.7 robotframework

from subprocess import call
import os

call(['robot '+os.getcwd()+'\\aaa.robot'])
Run Code Online (Sandbox Code Playgroud)

file_dir:D:/aaa/test/aaa.robot

现在在同一个目录中的脚本

Output:
Traceback (most recent call last):
  File "__init.py", line 7, in <module>
    call(['robot '+os.getcwd()+'\\aaa.robot'])
  File "C:\Python27\lib\subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 710, in __init_
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 958, in _execut
    startupinfo)
WindowsError: [Error 2] Nie mo?na odnale?Š okre?lonego pliku
Run Code Online (Sandbox Code Playgroud)

我只是无法处理它.我不明白为什么在python中调整任何东西都是如此复杂:(

我想要与此行相同的结果(直接写入cmd):

/>robot aaa.robot
Run Code Online (Sandbox Code Playgroud)

小智 8

这是另一种方式

import robot

logFile = open('mylog.txt', 'w') 
robot.run("tmp.robot",stdout=logFile)
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案!详细的使用说明可以在robot.run.py中找到 (3认同)

jDo*_*jDo 5

subprocess需要一个列表,但您输入的是字符串 ( 'robot '+os.getcwd()+'\\aaa.robot')。

尝试:

call(['C:/Python27/python.exe', '-m', 'robot', 'D:/aaa/test/aaa.robot'])
Run Code Online (Sandbox Code Playgroud)

或者

call(['C:/Python27/Scripts/robot.bat', 'D:/aaa/test/aaa.robot'])
Run Code Online (Sandbox Code Playgroud)

  • 太棒了:)您可以在终端中输入“robot”并运行程序的唯一原因是因为您的计算机知道“robot”实际上意味着“C:/Python27/Scripts/robot.bat”。`robot` 是实际程序的别名或“自定义”昵称。这些“昵称”和用户设置称为环境变量。它们仅适用于您的用户。从 Python 的角度来看,“robot”没有任何意义 - 它需要可执行文件的完整路径,或者您需要在 subproces 命令中显式设置“cwd=”。也许这也会起作用:`call(['robot.bat', 'D:/aaa/test/aaa.robot'], cwd='C:/Python27/Scripts')` (2认同)