首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >geckodriver -无法创建js变量然后读取它?

geckodriver -无法创建js变量然后读取它?
EN

Stack Overflow用户
提问于 2021-10-04 16:33:43
回答 1查看 35关注 0票数 0

我正在使用geckodriver.exe在火狐中实现一些Selenium自动化。有时我需要使用ExecuteScript创建一个全局变量,然后在稍后读取该变量:

代码语言:javascript
运行
复制
driver.ExecuteScript("  x = 'test'; ");
var result = driver.ExecuteScript("  return x; ");

在ChromeDriver中,我得到了一个返回的结果,它如预期的那样是“测试”。

使用GeckoDriver时,我在第二次调用时得到null。我是不是做错了什么?我真的打算在这里创建一个全局变量!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-05 00:41:37

你的解决方案没有起作用,这看起来确实有点奇怪。您可以利用Javascript的一个怪癖,即在窗口对象上设置属性来创建implicitly declared global variable

代码语言:javascript
运行
复制
var js = (IJavaScriptExecutor)driver;

js.ExecuteScript("window.x = 'test';");

在处理<frameset><iframe>时,您可以引用top在顶层窗口对象中设置全局变量:

代码语言:javascript
运行
复制
js.ExecuteScript("top.x = 'test';");

我的猜测是,您尝试的代码设置了一个全局变量,只是不是在您认为的window对象上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69439475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档