【发布时间】:2014-09-24 11:35:46
【问题描述】:
我需要在 Java 变量的 JavaScript 脚本中声明一个空数组。
JavaScript 数组在网页上是这样声明的:
tc_vars["products"] = new Array();
(我只需要products 的数组,而不需要tc_vars 的数组)。
这就是我尝试在 Java 中获取此变量的方式:
Object[] value = (Object[]) js.executeScript("return tc_vars['products'];");
(其中js 是与Selenium WebDriver 关联的JavascriptExecutor)。
我通常使用这种方法来获取字符串没有问题,但它似乎不适用于空数组。此外,我没有任何错误消息,WebDriver 只是崩溃了。
executeScript 方法返回一个Object 变量。将其转换为 String(当 JS 变量为字符串时)效果很好,但我没有机会将这个空数组转换为 String[] 或 Object[]。
【问题讨论】:
-
注意你的问题的标题:你不想在“Java”(通用)中得到它,你想在 Selenium 测试中得到它,这实际上是一个非常罕见的情况是想要执行此操作的有效要求。我会编辑,如果我是你,你现在提出的方式是一个很大的诱惑,让人们不阅读这个问题,只是防御性地投反对票。
-
至于实际问题本身:我不想开枪,但这闻起来像驱动程序中的错误。我假设某处有一个问题跟踪器,你检查这是否是一个已知的错误?
-
@Gimby 谢谢你的建议,我编辑了它。尽管驱动程序的行为看起来有问题,但实际上它总是在发生运行时错误时崩溃。我不知道 Java 会如何解释一个空的 Javascript 数组。
-
您可以在 JavaScript 端进行 JSON.stringify 并在 Java 端进行 JSON 反序列化。
-
@sap1ens 感谢您的提示,它将在将来很有用。关于我的问题,我目前无法解决,但我会尽快尝试您的想法。
标签: java javascript arrays selenium-webdriver