Команда Browser.evaluate из ECL не возвращает объект - PullRequest
0 голосов
/ 18 сентября 2018

В моем приложении Eclipse RCP я использую браузер SWT для отображения веб-приложения.Мне удалось автоматизировать тестирование приложения с помощью функции «invokevalu» для взаимодействия с элементами DOM (т. Е. Вставлять текст, выбирать кнопки и т. Д.).Тем не менее, я не смог определить, как проверить работоспособность приложения.Я пытаюсь вернуть объект DOM в ECL, чтобы я мог проверить объект и убедиться, что приложение работает.

Вот мой сценарий, в котором я пытаюсь присвоить значение переменной:

with [get-view "Encoder View" | get-control Browser] { get-object | invoke evaluate "document.getElementById('PDX').value;" | let [val obj -input] { format "%s" $obj | show-alert } }

Когда я выполняю скрипт, я получаю сообщение об ошибке «Не знаю, как поместить значение типа 'org.eclipse.core.runtime.Status'".Я не уверен, почему метод «оценки» возвращает тип «Состояние».Согласно документации , он должен возвращать «Объект».

Возможно ли это?Чего мне не хватает?

ОБНОВЛЕНИЕ

У меня было 2 проблемы с моим сценарием выше: 1) Мне не хватало ключевого слова return в javascript.2) Я извлекал неверный элемент из DOM.После того, как я изменил свой сценарий, добавив возврат и выбрав правильный элемент (переключатель), значения возвращаются и сохраняются в переменной ECL правильно.

Вот обновленный пример:

with [get-view "Encoder View" | get-control Browser] { get-object | invoke evaluate "return document.getElementById('PDXRADIO').checked;" | let [val obj -input] { format "%s" $obj | show-alert } }

1 Ответ

0 голосов
/ 19 сентября 2018

Результатом оценки является 'org.eclipse.core.runtime.Status', который является объектом.Здесь нет проблем.

Однако RCPTT (точнее, ECL) попытается поместить возвращаемое значение либо в EObject, либо в любой из поддерживаемых в штучной упаковке примитивов.См. Метод box () в строках 143 и 152:

https://github.com/xored/ecl/blob/master/plugins/org.eclipse.ecl.core/src/org/eclipse/ecl/runtime/BoxedValues.java

...