Пожалуйста, помогите мне, как сохранить сценарии в одной папке, так как я столкнулся с проблемой при импорте Script1 внутри Script2. Ниже приведены два скрипта.
Script1 : Переменная.sikuli
PID = "r'C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe'"
Когда я сохранил скрипт (Variable.sikuli), по умолчанию он создаст папку «Variable.sikuli» внутри этих «Variable.py» и «Variable.html».
Script2 : openMO.sikuli
def openMO():
openApp(PID) # PID will taken from Variable.sikuli
openMO()
Когда я сохранил скрипт (openMO.sikuli), по умолчанию он создаст папку «openMO.sikuli» внутри этих «openMO.py» и «openMO.html».
Теперь мои вопросы:
- Как сохранить два скрипта в одной папке?
- Как импортировать Variable.sikuli в openMO.sikuli?
2 ответа
Я не думаю, что вы должны или можете помещать несколько скриптов 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
Дополнительная информация доступна здесь .
Возможно, ответ немного запоздал, но если вы хотите импортировать такие вещи, как путь к другому файлу, вы также можете попробовать использовать глобальную переменную.
Не рекомендуется помещать несколько скриптов в одну папку .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()
Похожие вопросы
Новые вопросы
sikuli
Sikuli - это инструмент автоматизации на основе Java, доступный для Windows, macOS и Linux, который автоматизирует задачи с помощью визуального контроля экрана. Sikuli работает, сопоставляя ранее сделанные снимки экрана, и имитирует взаимодействие с пользователем, управляя мышью и клавиатурой. Самым большим преимуществом Sikuli является то, что он доступен как для настольных, так и для веб-приложений, поскольку он не требует какого-либо API.