栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用HtmlUnit错误执行JavaScript

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用HtmlUnit错误执行JavaScript

这些是您的框架所

javascript
翻译的脚本错误
Java exceptions

这是因为您尚未将的

setThrowExceptionOnscriptError
选项显式设置
WebClient
false

除非中绝对没有错误

js
,否则始终将其设置为false很有用,除非它会干扰您要查找的结果。

通常,这些是我的

webclient
设置有问题时
js
ajax
通过
HtmlUnit

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17,     PROXY_HOST, PROXY_PORT);WebRequest request = new WebRequest(new URL(     "http://steamcommunity.com/id/bobcatchris/inventory#730"));webClient.getOptions().setThrowExceptionOnscriptError(false);webClient.setJavascriptTimeout(10000);webClient.getOptions().setJavascriptEnabled(true);webClient.setAjaxController(new NicelyResynchronizingAjaxController());webClient.getOptions().setTimeout(10000);HtmlPage page = webClient.getPage(request);          String script="var list = [];n" +         "n" +         "n" +         "var size = Object.keys(g_ActiveInventory.rgInventory).size();n" +         "n" +         "n" +         "n" +         "var counter = 0;n" +         "n" +         "while (counter < size) {n" +         " list.push(g_ActiveInventory.rgInventory[Object.keys(g_ActiveInventory.rgInventory)[counter]].market_name);n" +         " counter +=1;n" +         "}"; Object result = page.executeJavascript(script).getJavascriptResult(); System.out.println(result);

如果我尝试使用您的代码,则使用上述设置,我会

150.0
打印到控制台上,并认为该控制台可以正常工作。

编辑:

要遍历整个数组

list

String script="var list = [];n" +         "n" +         "n" +         "var size = Object.keys(g_ActiveInventory.rgInventory).size();n" +         "n" +         "n" +         "n" +         "var counter = 0;n" +         "n" +         "while (counter < size) {n" +         " list.push(g_ActiveInventory.rgInventory[Object.keys(g_ActiveInventory.rgInventory)[counter]].market_name);n" +         " counter +=1;n" +         "}"         + "list"; Object result = page.executeJavascript(script).getJavascriptResult(); if (result instanceof NativeArray) {     for (Object obj : (NativeArray)result) {         System.out.println(obj);         } }

上面,我更改了

js
将列表包括在内作为返回参数,并进行迭代
NativeArray
以获取每个元素。

输出:

P2000 | Scorpion (Factory New)AK-47 | Black Laminate (Field-Tested)★ StatTrak™ Karambit | Case Hardened (Minimal Wear)CS:GO Case KeyCS:GO Case Key

您可以在其常见问题解答-
这里阅读有关其Ajax设置的更多信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号