我需要在 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 时)效果很好,但我没有机会将此空数组转换为 String[]
或 Object []
.
最佳答案
正如我在评论中提到的,您需要确保您确实有权访问 tc_vars['products']
在您要测试的位置。例如,手动打开浏览器,到达页面中您将使用 selenium 请求该值的位置,打开 devtools javascript 控制台并检查 tc_vars 的值。如果它对您不可用,则 selenium webdriver 也将不可用。
第二件事是对于数组,selenium webdriver(至少最新版本:2.42.2)返回 ArrayList<Object>
而不是 Object[]
.所以你的类型转换应该是:
ArrayList<Object> o = (ArrayList<Object>) js.executeScript("return tc_vars['products'];");
关于java - 在 Java 中获取一个空的 JavaScript 数组(Selenium 测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077282/