首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从JavascriptExecutor返回JSONArray

从JavascriptExecutor返回JSONArray
EN

Stack Overflow用户
提问于 2018-09-29 10:47:48
回答 2查看 468关注 0票数 0

我正在尝试从JavascriptExecutor返回一个JSONArray。通常我可以进入chrome浏览器,进入chrome的开发控制台,然后输入:"___grecaptcha_cfg.clients[0]",它会返回类似如下的内容:

不过,当我尝试这样做的时候:

代码语言:javascript
复制
JavascriptExecutor js = (JavascriptExecutor) Browser;         
Object  o = (Object) js.executeScript("return ___grecaptcha_cfg.clients[0];");

我得到了:

代码语言:javascript
复制
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Maximum call stack size exceeded (Session info: chrome=69.0.3497.100) (Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),
platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 0 milliseconds

你知道我该怎么克服这个问题吗?

谢谢

更新

似乎如果我使用:

代码语言:javascript
复制
 Object o = (Object) js.executeScript("return ___grecaptcha_cfg.clients[0].Cy.C;");

我回来了:

代码语言:javascript
复制
{action=null, badge=bottomright, bind=null, callback={}, content-binding=null, pool=null, preload=null, s=null, sitekey=flkgjsfldkjgsfdg, size=invisible, stoken=null, tabindex=null, theme=null, type=image}

这正是我正在寻找的,但Cy.C是不断变化的。我需要能够解析出可能会更改的正确值,当前的值是:

代码语言:javascript
复制
Cy.C

我假设这个值太长了?我怎样才能纠正这个问题?

更新2

使用:

代码语言:javascript
复制
String script = "return JSON.stringify(___grecaptcha_cfg.clients[0]);";
String str = (String) js.executeScript(script);

给我返回unknown error: Converting circular structure to JSON

从周围的搜索来看,我的问题可能是无限递归?对于如何解决这个问题,有什么建议吗?我不需要返回的对象是json格式的,我只需要能够解析出是通过正则表达式还是其他什么:'Cy.C‘,我可以通过查找callback={}sitekey={}找到它,这样我就可以构建一个字符串来调用回调。

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

https://stackoverflow.com/questions/52564652

复制
相关文章

相似问题

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