java - ECL 命令中的 Browser.evaluate 不返回对象

标签 java eclipse-rcp eclipse-rcptt

在我的 Eclipse RCP 应用程序中,我使用 SWT 浏览器来显示 Web 应用程序。我已经能够使用“调用评估”功能与 DOM 元素交互(即插入文本、选择按钮等)来自动测试应用程序。但是,我无法确定如何验证该应用程序是否有效。我试图在 ECL 中返回一个 DOM 对象,以便我可以检查该对象并验证应用程序是否正常工作。

这是我的脚本,我试图将值分配给变量:

with [get-view“编码器 View ”|获取控制浏览器] { 获取对象 |调用评估“document.getElementById('PDX').value;” |让 [val obj -输入] { 格式“%s”$obj |显示警报 } }

当我执行脚本时,出现错误“不知道如何装箱‘org.eclipse.core.runtime.Status’类型的值”。我不确定为什么“evaluate”方法返回类型“Status”。根据documentation ,它应该返回“Object”。

这可能吗?我错过了什么?

更新

上面的脚本有两个问题:1)我在 JavaScript 中缺少“return”关键字。 2) 我从 DOM 中检索了错误的元素。在我修改脚本以添加返回并选择正确的元素(单选按钮)后,值将正确返回并存储在 ECL 变量中。

以下是更新后的示例:

with [get-view“编码器 View ”|获取控制浏览器] { 获取对象 |调用评估“return document.getElementById('PDXRADIO').checked;” |让 [val obj -输入] { 格式“%s”$obj |显示警报 } }

最佳答案

评估的结果是“org.eclipse.core.runtime.Status”,它是一个对象。这里没问题。

然而,RCPTT(具体来说是 ECL)将尝试将返回值装箱到 EObject 或其支持的任何装箱基元中。请参阅第 143 行和第 152 行的 box() 方法:

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

关于java - ECL 命令中的 Browser.evaluate 不返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52391410/

相关文章:

java - 如何创建不同数字之间的映射?

java - 已声明时找不到符号

java - 如何获取当前选择的项目名称?

java - 如何在Jubula或RCP测试工具中注入(inject)参数?

java - RCPTT Maven 插件程序

java - 如何在 jsoup 中使用选择器语法获取属性

java - 调用 Class.isAnnotationPresent(...) 有多昂贵?

java - 测试 Eclipse 4 RCP 应用程序。提供必要的对象

java - 如何读取打开的文件并在 Eclipse Master Details block 中显示内容?