複数Formに対してのXPath指定
前に試した時の事をちょろっと。
勝手な私の推測ですがFormは特別扱いされてる?かなぁと。
新しいバージョンになったら、すんなり直ってるかもしれないと期待してます(^^;
試したのは、XPathによってFormを取得するメソッド作って
private HtmlForm test(HtmlPage page, String exp) throws JaxenException { return (HtmlForm) new HtmlUnitXPath(exp).selectSingleNode(page); }
Formが複数あるページに対してXPathでFormを取得。
System.out.println("test1=" + test(page, "//form[1]")); System.out.println("test2=" + test(page, "//form[2]")); System.out.println("test3=" + test(page, "//form[position() = 1]")); System.out.println("test4=" + test(page, "//form[position() = 2]")); System.out.println("test5=" + test(page, "//form[position() = last()]")); System.out.println("test6=" + test(page, "//form[last()]"));
2つ目のフォームがXPathでは取得出来ない。
表現として下記が全てNG
//form[2]
//form[position() = 2]
//form[position() = last()]
//form[last()]
という事で、複数Formがある場合の2番目のFormをidを指定せずに取得する方法は
HtmlForm getForm(HtmlPage page, int idx) throws JaxenException { // こっちか return (HtmlForm) new HtmlUnitXPath("//form").selectNodes(page).get(idx); // こっち return (HtmlForm) page.getForms().get(idx); }
//form[2]で取得出来ないんです...