java - 在 Java 中获取一个空的 JavaScript 数组(Selenium 测试)

标签 java javascript arrays selenium-webdriver

我需要在 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/

相关文章:

java - 按 Enter 键后 Eclipse 向导关闭

Java方法困惑

php - 如何将json数据传递到页面?

javascript - 在面板sencha touch中设置组件的html

c++ - 12个元素的数组-求数-练习

javascript - 从对象的数组元素中,如何访问对象的属性/方法。杰斯

java - 使用 RegEx 验证字符串

javascript - 使用 fullCalendar 控件获取所选时段的日期

java - JTable不显示Object[][]数据

java - gridview setOnItemClickListener 不起作用