栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号