Javascript 无法通过FirefoxDriver访问全局变量

Javascript 无法通过FirefoxDriver访问全局变量,javascript,java,selenium,webdriver,Javascript,Java,Selenium,Webdriver,我试图检索JavaScript全局变量的值,当我在FireFox中运行测试时,我总是得到未定义的 这项试验在铬上是成功的 index.html <html> <head> <script type="text/javascript"> window.seleniumTesting = "Just A Test"; </script> </head> <body> .... </body> </

我试图检索
JavaScript
全局变量的值,当我在FireFox中运行测试时,我总是得到
未定义的

这项试验在铬上是成功的

index.html

<html>
<head>
<script type="text/javascript">
   window.seleniumTesting = "Just A Test";
</script>
</head>
<body>
    ....
</body>
</html>
当我运行此命令时,
str
null
,并且在浏览器的JavaScript控制台
窗口中。seleniumTesting
被记录为
未定义

如果我使用
ChromeDriver
而不是
FirefoxDriver
。一切正常(
str
只是一个测试,控制台记录:
只是一个测试

这似乎是一个JavaScript上下文问题。在FirefoxDrive中,JavaScript上下文似乎不是网页的上下文

这是一个已知的问题吗?我可以将驱动程序的JavaScript上下文更改为网页的上下文吗

[编辑] 我正在为OSX使用
geckodriver


[编辑]和FireFox版本47。

使用
geckodriver
当前
v0.10.0
,必须使用
window.wrappedJSObject
访问窗口对象的非标准属性:

String str = (String)((JavascriptExecutor)driver).executeScript("return window.wrappedJSObject.seleniumTesting;");

您确定使用
FirefoxDriver
会得到
null
,因为在我的情况下,它在两个浏览器上都可以正常工作。:)@SaurabhGaur是的,我确定。这可能是由于我正在使用的
gecko
驱动程序造成的。它可能不适用于我当前的FireFox版本。我正在使用geckodriver的FireFox当前版本进行尝试,它在我的情况下运行良好。为什么要使用
Thread.currentThread().wait(55000)??使用
executeAsyncScript()
作为
(字符串)((JavascriptExecutor)浏览器的更好方法。可能会有帮助:)@SaurabhGaur我刚刚用
executeAsyncScript(…)
尝试了一下,得到了同样的结果。我使用了
wait(…)
调用来确保页面已完全加载。您能分享一下如何使用
geckodriver
初始化
FireFoxDriver
,因为我使用
Marionetedriver
在firefox上测试它。非常感谢您的支持,也谢谢@SaurabhGaur。你怎么知道
window.wrappedJSObject
在某些文档中提到过它吗?@Titus,它在木偶驱动程序的文档中提到过,木偶驱动程序是壁虎驱动程序下面的一层。好的,再次感谢。我会调查的,我只是刚刚开始做这一切。
String str = (String)((JavascriptExecutor)driver).executeScript("return window.wrappedJSObject.seleniumTesting;");