У меня есть функция JavaScript (очень большой!), что мне нужна его функциональность в Java (Groovy) класс. Это - простой календарный преобразователь. Я могу переписать его в отличном, но просто хотеть знать, возможно ли вызвать функцию JavaScript от Java (отличный) метод? Я предполагаю библиотеки функционального тестирования как селен, и Canoo должен иметь что-то вроде этого, действительно ли я прав? PS: Я не хочу будить реальный браузер для использования его ENV во время выполнения JS.
Спасибо,
Как упоминалось в других ответах, можно использовать Scripting API , предоставляемый как часть javax.script
пакет, доступный на Java 6.
Ниже приведен пример Groovy, который выполняет небольшую часть Javascript:
import javax.script.*
manager = new ScriptEngineManager()
engine = manager.getEngineByName("JavaScript")
javascriptString = """
obj = {"value" : 42}
print(obj["value"])
"""
engine.eval(javascriptString) // prints 42
Нет необходимости вызывать браузер для выполнения Javascript при использовании Scripting API, но следует имейте в виду, что функции, специфичные для браузера (возможно, функции, связанные с DOM), будут недоступны.
Вы можете использовать Rhino, реализацию языка JavaScript в Java. Вот пример вызова функции JavaScript из java, но вы можете сделать это и из groovy.