Вызов скрипта Sikuli из Python (Selenium)

Во время выполнения тестов Selenium на веб-сайте у меня есть некоторые элементы Flash, которые я не могу проверить с помощью Selenium / Python. Я хотел позвонить в отдельное окно терминала, запустить тесты Sikuli OCR, а затем вернуться к тестированию Selenium / Python. Я не смог точно понять это. Я помещаю XXX, где не знаю аргументов для открытия нового терминала и запуска скрипта Sikuli.

def test_05(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_link_text("Home").click() driver.find_element_by_id("open_popup").click() driver.find_element_by_id("screen_name").send_keys("user") driver.find_element_by_id("password").send_keys("pwd") driver.find_element_by_id("login_submit").click() driver.find_element_by_id("button").click() time.sleep(120) os.system('XXX') os.system('./Sikuli/sikuli-script -r test.sikuli') 

Я уверен, что здесь есть пара вещей. Любая помощь будет принята с благодарностью. Я искал и читал то, что я могу найти на этом уже, но не могу заставить все работать вместе.

3 Solutions collect form web for “Вызов скрипта Sikuli из Python (Selenium)”

Я столкнулся с подобной проблемой, поэтому я написал модуль CPython для Sikuli. Модуль размещен на GitHub и доступен через pip install sikuli . Он может получить доступ к включенной банке Sikuli с использованием pyjnius , поэтому вам не нужно использовать Jython или даже установить Sikuli (хотя я бы рекомендовал его для записи). Модуль в настоящее время охватывает большинство более простых функций Sikuli, поэтому он должен охватывать множество вариантов использования.

После установки простой from sikuli import * вы начнете, но, как наилучшая практика, я бы предложил только импортировать функции, которые вы хотите использовать. Это особенно важно для этого модуля, поскольку сикули имеет функцию type которая переопределяет собственную функцию type Python.

Для вызова кода Sikuli из Selenium, моим первым выбором было бы предложение TestAutomationEngr использования Java, поскольку Selenium и Sikuli имеют собственные привязки Java.

Поскольку вы хотите использовать Python, вы должны попробовать запустить Selenium под Jython. Важно помнить, что Sikuli – это Jython , поэтому, вероятно, вы не можете его импортировать. (Другая причина в том, что у вас его нет в модульном пути Jython.) Я не пробовал это сам, но в прошлом году в Selenium произошла ошибка, которая указывает, что в Jython должно быть хорошо.

Обратите внимание: если вы вызываете код Sikuli непосредственно из Jython, вам нужно добавить

 from sikuli.Sikuli import * 

наверху. Это связано с тем, что IDE Sikuli неявно добавляет это ко всему коду Sikuli.

Наконец, последнее средство – позвонить Сикули из командной строки. Для этого есть FAQ . Вероятно, вам нужна версия «без IDE», где вы вызываете Java и передаете файл JAR sikuli-script.

Если ваш скрипт sikuli полностью независим, и вы просто хотите запустить его один раз, а затем снова получить контроль над своим скриптом python. Затем вы можете создать командный файл, который вызывает ваш скрипт sikuli и вместо этого вызывается этот командный файл из вашего скрипта python. Как только пакетный файл будет запущен, он выйдет и вернет элемент управления обратно на ваш скрипт python.

Пример пакетного файла:

 @echo off call C:\Sikuli\runIDE.cmd -r C:\Automation\Test1.sikuli exit 

Фрагмент кода для вызова скрипта Sikuli изнутри python:

 import subprocess def runSikuliScript(path): filepath = path p = subprocess.Popen(filepath, shell=True, stdout = subprocess.PIPE) stdout, stderr = p.communicate() print "Done Running Sikuli" p = "C:\\Automation\\Test1\\test1.bat" runSikuliScript(p) // You can carry on writing your python code from here on 
Python - лучший язык программирования в мире.