如何在一个文件夹中保存两个不同的Sikuli脚本

时间:2015-02-20 07:13:45

标签: sikuli

请帮我解释如何将脚本保存在单个文件夹中,因为我在Script2中导入Script1时遇到了问题。以下是两个脚本。

Script1:Variable.sikuli

PID = "r'C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe'"

当我保存脚本(Variable.sikuli)时,默认情况下它将在“Variable.py”和“Variable.html”中创建一个文件夹“Variable.sikuli”

Script2:openMO.sikuli

def openMO():
    openApp(PID) # PID will taken from Variable.sikuli
openMO()

当我保存脚本(openMO.sikuli)时,默认情况下会在“openMO.py”和“openMO.html”中创建一个文件夹“openMO.sikuli”

现在我的问题是:

  1. 如何将两个脚本保存在一个文件夹中?
  2. 如何在openMO.sikuli中导入Variable.sikuli?

2 个答案:

答案 0 :(得分:0)

我认为您不应该或可以将多个Sikuli脚本放在一个文件夹中,以使它们彼此可见。通常,包含要导入的.sikuli的目录/文件夹必须位于sys.path中。 Sikuli在导入时会自动在同一目录中找到其他Sikuli脚本。导入的脚本必须包含(作为第一行)以下语句:

from sikuli import * 

这对于Python环境来说必须知道Sikuli类,方法,函数和全局名称。

以下是一个例子

# on Windows
myScriptPath = "c:\\someDirectory\\myLibrary"
# on Mac/Linux
myScriptPath = "/someDirectory/myLibrary"

# all systems
if not myScriptPath in sys.path: sys.path.append(myScriptPath)

# supposing there is a myLib.sikuli
import myLib

# supposing myLib.sikuli contains a function "def myFunction():"
myLib.myFunction() # makes the call

有更多信息here

答案 1 :(得分:0)

也许有点迟到的答案,但如果你想导入像另一个文件的路径之类的东西,你也可以尝试使用全局变量。

不建议将多个脚本放在一个.sikuli文件夹中。
如果你的脚本/程序变得更大,它可能会变得非常混乱。

使用全局变量,您可以创建一个可以在整个脚本中使用的变量。
当您在python中导入文件时,它会立即运行该类,并设置变量。
如果在脚本A中定义全局变量,然后让脚本B导入脚本A.那么脚本B也知道脚本A的全局变量是什么样的。

要在定义中设置或使用全局变量,您必须首先使用以下方法调用它:" global variableName"

我在下面有一些示例代码可能会让事情变得更清晰。

文件:BrowserPath.sikuli

# Define a Global variable 
PathFireFox = ''

class Fire():
    def __init__(self):
        global PathFireFox
        PathFireFox = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"

# Run Fire()
Fire()

文件:BrowserMain.sikuli

# Import other class. 
from BrowserPath import *

class Main():
    def __init__(self):
        global PathFireFox
        App.open(PathFireFox)

# Run Main class 
Main()