来自 ECL 命令的 Browser.evaluate 没有 return 对象
Browser.evaluate from ECL command doesn't return Object
在我的 Eclipse RCP 应用程序中,我使用 SWT 浏览器来显示 Web 应用程序。我已经能够使用 "invoke evaluate" 函数与 DOM 元素(即插入文本、select 按钮等)交互来自动测试应用程序。但是,我无法确定如何验证该应用程序是否有效。我正在尝试 return ECL 中的 DOM 对象,以便我可以检查该对象并验证应用程序是否正常工作。
这是我的脚本,我在其中尝试将值分配给变量:
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
}
}
当我执行脚本时出现错误 "Do not know how to box value of type 'org.eclipse.core.runtime.Status'"。我不确定为什么 "evaluate" 方法是 returning 类型 "Status"。根据documentation,应该return "Object".
这可能吗?我错过了什么?
更新
我上面的脚本有 2 个问题:1) 我在 javascript 中缺少 "return" 关键字。 2) 我从 DOM 中检索了不正确的元素。在我修改我的脚本以添加 return 和 select 正确的元素(单选按钮)后,这些值被 return 编辑并正确存储在 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
}
}
求值的结果是一个'org.eclipse.core.runtime.Status',是一个Object。这里没问题。
但是 RCPTT(具体来说是 ECL)将尝试将返回值装箱到 EObject 或它支持的任何装箱原语中。请参阅第 143 和 152 行的 box() 方法:
在我的 Eclipse RCP 应用程序中,我使用 SWT 浏览器来显示 Web 应用程序。我已经能够使用 "invoke evaluate" 函数与 DOM 元素(即插入文本、select 按钮等)交互来自动测试应用程序。但是,我无法确定如何验证该应用程序是否有效。我正在尝试 return ECL 中的 DOM 对象,以便我可以检查该对象并验证应用程序是否正常工作。
这是我的脚本,我在其中尝试将值分配给变量:
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
}
}
当我执行脚本时出现错误 "Do not know how to box value of type 'org.eclipse.core.runtime.Status'"。我不确定为什么 "evaluate" 方法是 returning 类型 "Status"。根据documentation,应该return "Object".
这可能吗?我错过了什么?
更新
我上面的脚本有 2 个问题:1) 我在 javascript 中缺少 "return" 关键字。 2) 我从 DOM 中检索了不正确的元素。在我修改我的脚本以添加 return 和 select 正确的元素(单选按钮)后,这些值被 return 编辑并正确存储在 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
}
}
求值的结果是一个'org.eclipse.core.runtime.Status',是一个Object。这里没问题。
但是 RCPTT(具体来说是 ECL)将尝试将返回值装箱到 EObject 或它支持的任何装箱原语中。请参阅第 143 和 152 行的 box() 方法: