填写表格

时间:2014-08-25 17:13:54

标签: java html htmlunit

尝试在IMDb网站上获取搜索结果。代码如下:

 public static void main(String[] args) throws IOException
{
    java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
    System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
    final WebClient webClient = new WebClient(BrowserVersion.CHROME);

    HtmlPage page1 = webClient.getPage("http://www.imdb.com");
    HtmlInput input1 = page1.getElementByName("q");
    input1.setValueAttribute("Teenage Mutant Ninja Turtles");

    HtmlSubmitInput submit = page1.getElementByName("navbar-submit-button");

    page1 = submit.click();

    System.out.println(page1.asText());

    webClient.closeAllWindows();
}

我得到的输出是:

  

线程中的异常" main"   com.gargoylesoftware.htmlunit.ElementNotFoundException:   elementName = [*] attributeName = [name] attributeValue = [navbar-find] at   com.gargoylesoftware.htmlunit.html.HtmlPage.getElementByName(HtmlPage.java:1747)     在main.Main.main(Main.java:37)Java结果:1

提交按钮的ID为:navbar-submit-button。

源代码是:

<button id="navbar-submit-button" class="primary btn" type="submit"><div class="magnifyingglass navbarSprite"></div></button>

提前谢谢。

2 个答案:

答案 0 :(得分:2)

您的示例中有两个重要的情况:

1 - 由于以下行,您需要一个名为q的元素:

HtmlInput input1 = page1.getElementByName("q");

2 - 你有一个id="navbar-submit-button"的元素,所以你必须使用getElementById:

HtmlSubmitInput submit = page1.getElementById("navbar-submit-button");

答案 1 :(得分:0)

它对我有用的方法是使用XPath。这是我可以选择id。太好了。谢谢你的帮助。