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");