1

JSoup では、次のテスト ケースに合格する必要がありますが、合格しません。

@Test
public void shouldPrintHrefCorrectly(){
    String content=  "<li><a href=\"#\">Good</a><ul><li><a href=\"article.php?boid=1865&sid=53&mid=1\">" +
            "Boss</a></li><li><a href=\"article.php?boid=186&sid=53&mid=1\">" +
            "heavent</a></li><li><a href=\"article.php?boid=167&sid=53&mid=1\">" +
            "hellos</a></li><li><a href=\"article.php?boid=181&sid=53&mid=1\">" +
            "Mr.Jackson!</a></li>";

    Document document = Jsoup.parse(content, "http://www.google.co.in/");
    Elements links = document.select("a[href^=article]");
    Iterator<Element> iterator = links.iterator();
    List<String> urls = new ArrayList<String>();
    while(iterator.hasNext()){
        urls.add(iterator.next().attr("href"));
    }

    Assert.assertTrue(urls.contains("article.php?boid=181&sid=53&mid=1"));
}

失敗した理由を教えてください。

4

1 に答える 1

1

次の 3 つの問題があります。

  1. パラメータが存在すると主張していbovikatanidますが、実際には と呼ばれていboidます。

  2. HTML ソースは、ソース内の&代わりに使用&amp;しています。これは技術的に無効です。

  3. Jsoupはどういうわけか解析&mid|ています。までスキャンされているはず;です。

#1を修正するには、自分で行う必要があります。#2を修正するには、この問題を問題のサーバー管理者に報告する必要があります(ただし、平均的なブラウザはこれを許容しているため、Googleは帯域幅を節約するためにこれを行っていると思います)。#3 を修正するために、Jsoup 担当者に問題を報告し、彼がこれについてどう考えているかを確認しました。


更新: ほら、Jonathan (Jsoup 担当者) が修正しました。これは次のリリースで提供される予定です。

于 2011-01-25T12:42:30.590 に答える