繁体   English   中英

使用webdriver执行javascript后,如何获取JSON响应(作为字符串)?

[英]How do I get the JSON response (as string) after executing javascript with webdriver ?

到目前为止,我已经尝试过了,它总是返回“ null”

    WebDriver driver = new FirefoxDriver();


    driver.get("http://localhost/index.php");


    driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);

    Object response = ((JavascriptExecutor) driver).executeScript("Debug.gameControls.debugSpinStart({\"positions\":[16,27,25,19,26],\"reelsIndex\":0});$.getJSON");

    System.out.println(response); 

有什么建议么 ?

您不会从JavaScript代码返回任何内容,因此总会得到null 您将需要以下内容:

Object response = ((JavascriptExecutor) driver).executeScript("return ...")

$ getJSON接受回调,假设您使用它调用资源,则下面的代码可用于以字符串格式返回json数据。

JSON.stringify()将json对象转换为executescript范围内的字符串。 然后executeScript返回此值,并将其分配给下面的响应对象。

Object response = ((JavascriptExecutor) driver).executeScript("Debug.gameControls.debugSpinStart({\"positions\":[16,27,25,19,26],\"reelsIndex\":0});" + 
"$.getJSON('/resource/data.json',function(data){ return JSON.stringify(data) });")

并使用jsonparser将字符串解析为Json

JsonElement jelement = new JsonParser().parse((String) response);
JsonObject  jobject = jelement.getAsJsonObject();  

以上两种类型都需要导入com.google.json。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM