【问题标题】:Modify Java variable within JavascriptExecutor在 JavascriptExecutor 中修改 Java 变量
【发布时间】:2015-05-14 11:26:13
【问题描述】:

是否可以在 Selenium JavascriptExecutor 中修改 Java 变量的值?

我知道可以以'"+myjavavar+"' 的形式访问JavascriptExecutor 中的Java 变量,但是我们如何修改它呢?

如果我使用'"+myjavavar+"'= somenewvalue;,它会失败并出现错误"invalid assignment left-hand side"

【问题讨论】:

  • 您可能在这里混淆了 java 和 javascript。你想通过JavascriptExecutor修改一个javascript变量,对吧?
  • @alecxe 不,我想通过JavascriptExecutor访问和修改一个java变量。
  • 您能否详细说明这种要求背后的动机?
  • 基本上我希望在这里实现的是以下(1)或(2)。 (1) 由于我的 JavascriptExecutor 修改了一些 javascript 变量,我需要这些值在 java 程序中可用。一种可以在 java 和 javascript 中使用的全局 javascript 变量。 (2) 我有一个 java 变量,它有一些初始值。我需要将此值传递给 JavascriptExecutor,并且在 JavascriptExecutor 中,我将在某些条件下更新此值,然后使用新值继续 Java 程序。我不想在这里使用任何基于 cookie 的全局存储。

标签: java javascript variables selenium selenium-webdriver


【解决方案1】:

您可以通过JavascriptExecutor 获取和设置javascript 变量。要在您执行的每个脚本中使用测试会话期间的“全局”变量,请将其保留在 global window object 上。示例:

JavascriptExecutor js = (JavascriptExecutor) driver;

// set the value (note how the arguments are passed into)
js.executeScript("window.myvar = arguments[0];", "Test");

// get the value (note the "return")
String myvar = (String) js.executeScript("return window.myvar;");
System.out.println(myvar);

【讨论】:

  • 谢谢...!很公平。
猜你喜欢
  • 2016-05-24
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2016-04-17
  • 2021-12-21
  • 2015-01-21
  • 1970-01-01
相关资源
最近更新 更多