我正在使用geckodriver.exe在火狐中实现一些Selenium自动化。有时我需要使用ExecuteScript创建一个全局变量,然后在稍后读取该变量:
driver.ExecuteScript(" x = 'test'; ");
var result = driver.ExecuteScript(" return x; ");在ChromeDriver中,我得到了一个返回的结果,它如预期的那样是“测试”。
使用GeckoDriver时,我在第二次调用时得到null。我是不是做错了什么?我真的打算在这里创建一个全局变量!
发布于 2021-10-05 00:41:37
你的解决方案没有起作用,这看起来确实有点奇怪。您可以利用Javascript的一个怪癖,即在窗口对象上设置属性来创建implicitly declared global variable
var js = (IJavaScriptExecutor)driver;
js.ExecuteScript("window.x = 'test';");在处理<frameset>或<iframe>时,您可以引用top在顶层窗口对象中设置全局变量:
js.ExecuteScript("top.x = 'test';");我的猜测是,您尝试的代码设置了一个全局变量,只是不是在您认为的window对象上。
https://stackoverflow.com/questions/69439475
复制相似问题