Java 使用HtmlUnit会产生一长串错误
我想做的是去一个网站,从两个下拉列表中选择项目,在一个框中键入一些内容,然后按下一个按钮。然后我想得到结果文本,它将被放在一个你无法输入的框中 我想使用的网站是,这是我的代码,除了获取最终文本(因为我还不知道怎么做),它完成了我想做的所有事情 编辑:更改后Java 使用HtmlUnit会产生一长串错误,java,htmlunit,Java,Htmlunit,我想做的是去一个网站,从两个下拉列表中选择项目,在一个框中键入一些内容,然后按下一个按钮。然后我想得到结果文本,它将被放在一个你无法输入的框中 我想使用的网站是,这是我的代码,除了获取最终文本(因为我还不知道怎么做),它完成了我想做的所有事情 编辑:更改后 Page page = webCLient... 到 我没有得到任何错误,但当我运行时,我得到以下错误 线程“main”com.gargoylesoftware.htmlunit.ElementNotFoundException中的异常:e
Page page = webCLient...
到
我没有得到任何错误,但当我运行时,我得到以下错误
线程“main”com.gargoylesoftware.htmlunit.ElementNotFoundException中的异常:elementName=[option]attributeName=[value]attributeValue=[English]
在com.gargoylesoftware.htmlunit.html.HtmlSelect.getOptionByValue(HtmlSelect.java:437)上
在maple.Main.Main(Main.java:43)
第43行是
HtmlOption option = select.getOptionByValue("English");
你所说的80%的“错误”实际上是警告。这些大部分都是JavaScript不符合项,您可能会忽略这些不符合项(或者,如果您确实可以访问代码,则在服务器中进行更正,我猜您不会,因为您似乎在破坏页面)
19%的实际错误与无法创建Flash对象有关。这是有道理的,因为它不能处理flash。检查其他类似问题:。无论如何,您也应该忽略这些错误,因为它们实际上应该是信息性消息
1%是不允许您运行代码的实际错误:
Exception in thread "main" java.lang.ClassCastException:
com.gargoylesoftware.htmlunit.html.HtmlPage cannot be cast to
com.gargoylesoftware.htmlunit.html.HtmlSelect
at maple.Main.main(Main.java:42)
这里有一个HtmlPage
对象,您正在将其强制转换为HtmlSelect
。这将产生上述例外情况。可能您正试图这样做:
HtmlSelect select = (HtmlSelect) page.getElementById("SelSrcLang");
注意:只有在使用HtmlPage
而不是Page
对象时,这才有效。看
我希望这个远程调试会话有帮助:)当我更改这一行(实际上是第42行)时,它告诉我这是一个错误“类型页的getElementById(String)方法未定义”,解决方案是“在强制转换周围添加括号”。无论您使用什么IDE(我猜是Eclipse),都会尽力猜测错误。然而,它们并非总是正确的。读取JavaDoc时,该错误变得很明显。我已经更新了答案。这是否意味着我不能使用该页面,或者有其他方法可以使用该页面?这意味着您必须在代码中添加4个字母:用
HtmlPage
替换page
。实际上,您已经在使用一个HtmlPage
实例(查看异常),但是由于您的变量属于Page
类,因此在更改后会出现编译时错误,它告诉我当它是一个选项时,它找不到“English”。我已经更新了OP。
Exception in thread "main" java.lang.ClassCastException:
com.gargoylesoftware.htmlunit.html.HtmlPage cannot be cast to
com.gargoylesoftware.htmlunit.html.HtmlSelect
at maple.Main.main(Main.java:42)
HtmlSelect select = ((HtmlSelect) page).getElementById("SelSrcLang");
HtmlSelect select = (HtmlSelect) page.getElementById("SelSrcLang");