⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formtagtest.java

📁 html to xml convertor
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// HTMLParser Library $Name: v1_6 $ - A java-based parser for HTML// http://sourceforge.org/projects/htmlparser// Copyright (C) 2004 Somik Raha//// Revision Control Information//// $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/tagTests/FormTagTest.java,v $// $Author: derrickoswald $// $Date: 2006/06/04 19:17:20 $// $Revision: 1.49 $//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//package org.htmlparser.tests.tagTests;import org.htmlparser.Node;import org.htmlparser.Parser;import org.htmlparser.PrototypicalNodeFactory;import org.htmlparser.Remark;import org.htmlparser.Tag;import org.htmlparser.Text;import org.htmlparser.filters.NodeClassFilter;import org.htmlparser.tags.BodyTag;import org.htmlparser.tags.FormTag;import org.htmlparser.tags.HeadTag;import org.htmlparser.tags.Html;import org.htmlparser.tags.InputTag;import org.htmlparser.tags.LinkTag;import org.htmlparser.tags.OptionTag;import org.htmlparser.tags.ParagraphTag;import org.htmlparser.tags.SelectTag;import org.htmlparser.tags.TableTag;import org.htmlparser.tags.TextareaTag;import org.htmlparser.tests.ParserTestCase;import org.htmlparser.util.NodeIterator;import org.htmlparser.util.NodeList;import org.htmlparser.util.ParserException;public class FormTagTest extends ParserTestCase {    static    {        System.setProperty ("org.htmlparser.tests.tagTests.FormTagTest", "FormTagTest");    }    public static final String FORM_HTML =    "<FORM METHOD=\""+FormTag.POST+"\" ACTION=\"do_login.php\" NAME=\"login_form\" onSubmit=\"return CheckData()\">\n"+        "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>User Name</b></font></TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"text\" NAME=\"name\" SIZE=\"20\"></TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>Password</b></font></TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"password\" NAME=\"passwd\" SIZE=\"20\"></TD></TR>\n"+        "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Login\"></TD></TR>\n"+        "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+        "<TEXTAREA name=\"Description\" rows=\"15\" cols=\"55\" wrap=\"virtual\" class=\"composef\" tabindex=\"5\">Contents of TextArea</TEXTAREA>\n"+//      "<TEXTAREA name=\"AnotherDescription\" rows=\"15\" cols=\"55\" wrap=\"virtual\" class=\"composef\" tabindex=\"5\">\n"+        "<INPUT TYPE=\"hidden\" NAME=\"password\" SIZE=\"20\">\n"+        "<INPUT TYPE=\"submit\">\n"+        "</FORM>";    public FormTagTest(String name) {        super(name);    }    public void assertTypeNameSize(String description,String type,String name,String size,InputTag inputTag)    {        assertEquals(description+" type",type,inputTag.getAttribute("TYPE"));        assertEquals(description+" name",name,inputTag.getAttribute("NAME"));        assertEquals(description+" size",size,inputTag.getAttribute("SIZE"));    }    public void assertTypeNameValue(String description,String type,String name,String value,InputTag inputTag)    {        assertEquals(description+" type",type,inputTag.getAttribute("TYPE"));        assertEquals(description+" name",name,inputTag.getAttribute("NAME"));        assertEquals(description+" value",value,inputTag.getAttribute("VALUE"));    }    public void testScan() throws ParserException    {        createParser(FORM_HTML,"http://www.google.com/test/index.html");        parseAndAssertNodeCount(1);        assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        assertStringEquals("Method",FormTag.POST,formTag.getFormMethod());        assertStringEquals("Location","http://www.google.com/test/do_login.php",formTag.getFormLocation());        assertStringEquals("Name","login_form",formTag.getFormName());        InputTag nameTag = formTag.getInputTag("name");        InputTag passwdTag = formTag.getInputTag("passwd");        InputTag submitTag = formTag.getInputTag("submit");        InputTag dummyTag = formTag.getInputTag("dummy");        assertNotNull("Input Name Tag should not be null",nameTag);        assertNotNull("Input Password Tag should not be null",passwdTag);        assertNotNull("Input Submit Tag should not be null",submitTag);        assertNull("Input dummy tag should be null",dummyTag);        assertTypeNameSize("Input Name Tag","text","name","20",nameTag);        assertTypeNameSize("Input Password Tag","password","passwd","20",passwdTag);        assertTypeNameValue("Input Submit Tag","submit","submit","Login",submitTag);        TextareaTag textAreaTag = formTag.getTextAreaTag("Description");        assertNotNull("Text Area Tag should have been found",textAreaTag);        assertEquals("Text Area Tag Contents","Contents of TextArea",textAreaTag.getValue());        assertNull("Should have been null",formTag.getTextAreaTag("junk"));        assertStringEquals("toHTML",FORM_HTML,formTag.toHtml());    }    public void testScanFormWithNoEnding() throws Exception    {        createParser(        "<TABLE>\n"+        "<FORM METHOD=\"post\" ACTION=\"do_login.php\" NAME=\"login_form\" onSubmit=\"return CheckData()\">\n"+        "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>User Name</b></font></TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"text\" NAME=\"name\" SIZE=\"20\"></TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>Password</b></font></TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"password\" NAME=\"passwd\" SIZE=\"20\"></TD></TR>\n"+        "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+        "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Login\"></TD></TR>\n"+        "<TR><TD ALIGN=\"center\">&nbsp;</TD></TR>\n"+        "<INPUT TYPE=\"hidden\" NAME=\"password\" SIZE=\"20\">\n"+        "</TABLE>","http://www.google.com/test/index.html");        parser.setNodeFactory (            new PrototypicalNodeFactory (                new Tag[]                {                    new FormTag (),                    new InputTag (),                    new TextareaTag (),                    new SelectTag (),                    new OptionTag (),                }));        parseAndAssertNodeCount(4);    }    /**     * Bug reported by Pavan Podila - forms with links are not being parsed     * Sample html is from google     */    public void testScanFormWithLinks() throws ParserException    {        createParser(        "<form action=\"/search\" name=f><table cellspacing=0 cellpadding=0><tr><td width=75>&nbsp;"+        "</td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie "+        "value=\"UTF-8\"><input type=hidden name=oe value=\"UTF-8\"><input maxLength=256 size=55"+        " name=q value=\"\"><br><input type=submit value=\"Google Search\" name=btnG><input type="+        "submit value=\"I'm Feeling Lucky\" name=btnI></td><td valign=top nowrap><font size=-2>"+        "&nbsp;&#8226;&nbsp;<a href=/advanced_search?hl=en>Advanced&nbsp;Search</a><br>&nbsp;&#8226;"+        "&nbsp;<a href=/preferences?hl=en>Preferences</a><br>&nbsp;&#8226;&nbsp;<a href=/"+        "language_tools?hl=en>Language Tools</a></font></td></tr></table></form>"        );        parser.setNodeFactory (            new PrototypicalNodeFactory (                new Tag[]                {                    new FormTag (),                    new InputTag (),                    new TextareaTag (),                    new SelectTag (),                    new OptionTag (),                    new LinkTag (),                    new TableTag (),                }));        parseAndAssertNodeCount(1);        assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag);        NodeList linkTags = new NodeList ();        NodeClassFilter filter = new NodeClassFilter (LinkTag.class);        for (NodeIterator e = ((FormTag)node[0]).children (); e.hasMoreNodes ();)            e.nextNode ().collectInto (linkTags, filter);        assertEquals("Link Tag Count",3,linkTags.size ());        LinkTag[] linkTag = new LinkTag[3];        linkTags.copyToNodeArray (linkTag);        assertEquals("First Link Tag Text","Advanced&nbsp;Search",linkTag[0].getLinkText());        assertEquals("Second Link Tag Text","Preferences",linkTag[1].getLinkText());        assertEquals("Third Link Tag Text","Language Tools",linkTag[2].getLinkText());    }    /**     * Bug 652674 - forms with comments are not being parsed     */    public void testScanFormWithComments() throws ParserException {        createParser(        "<form action=\"/search\" name=f><table cellspacing=0 cellpadding=0><tr><td width=75>&nbsp;"+        "</td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie "+        "value=\"UTF-8\"><input type=hidden name=oe value=\"UTF-8\"><!-- Hello World -->"+        "<input maxLength=256 size=55"+        " name=q value=\"\"><br><input type=submit value=\"Google Search\" name=btnG><input type="+        "submit value=\"I'm Feeling Lucky\" name=btnI></td><td valign=top nowrap><font size=-2>"+        "&nbsp;&#8226;&nbsp;<a href=/advanced_search?hl=en>Advanced&nbsp;Search</a><br>&nbsp;&#8226;"+        "&nbsp;<a href=/preferences?hl=en>Preferences</a><br>&nbsp;&#8226;&nbsp;<a href=/"+        "language_tools?hl=en>Language Tools</a></font></td></tr></table></form>"        );        parser.setNodeFactory (            new PrototypicalNodeFactory (                new Tag[]                {                    new FormTag (),                    new InputTag (),                    new TextareaTag (),                    new SelectTag (),                    new OptionTag (),                    new TableTag (),                }));        parseAndAssertNodeCount(1);        assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag);        NodeList remarkNodes = new NodeList ();        NodeClassFilter filter = new NodeClassFilter (Remark.class);        for (NodeIterator e = ((FormTag)node[0]).children (); e.hasMoreNodes ();)            e.nextNode ().collectInto (remarkNodes, filter);        assertEquals("Remark Node Count",1,remarkNodes.size ());        assertEquals("First Remark Node"," Hello World ",remarkNodes.elementAt (0).getText ());    }    /**     * Bug 652674 - forms with comments are not being parsed     */    public void testScanFormWithComments2() throws ParserException {        createParser(        "<FORM id=\"id\" name=\"name\" action=\"http://some.site/aPage.asp?id=97\" method=\"post\">\n"+        "   <!--\n"+        "   Just a Comment\n"+        "   -->\n"+        "</FORM>");        parseAndAssertNodeCount(1);        assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        Remark [] remarkNode = new Remark[10];        int i = 0;        for (NodeIterator e=formTag.children();e.hasMoreNodes();) {            Node formNode = e.nextNode();            if (formNode instanceof Remark) {                remarkNode[i++] = (Remark)formNode;            }        }        assertEquals("Remark Node Count",1,i);    }    /**     * Bug 656870 - a form tag with a previously open link causes infinite loop     * on encounter     */    public void testScanFormWithPreviousOpenLink() throws ParserException {        createParser(            "<A HREF=\"http://www.oygevalt.org/\">Home</A>\n"+            "<P>\n"+            "And now, the good stuff:\n"+            "<P>\n"+            "<A HREF=\"http://www.yahoo.com\">Yahoo!\n"+            "<FORM ACTION=\".\" METHOD=\"GET\">\n"+                "<INPUT TYPE=\"TEXT\">\n"+                "<BR>\n"+                "<A HREF=\"http://www.helpme.com\">Help</A> " +                "<INPUT TYPE=\"checkbox\">\n"+                "<P>\n"+                "<INPUT TYPE=\"SUBMIT\">\n"+            "</FORM>"        );        parseAndAssertNodeCount(5);        assertTrue("Fourth Node is a paragraph",node[3] instanceof ParagraphTag);        ParagraphTag paragraph = (ParagraphTag)node[3];        assertTrue("Second Node of paragraph is a link", paragraph.getChildren ().elementAt (1) instanceof LinkTag);        LinkTag linkTag = (LinkTag)paragraph.getChildren ().elementAt (1);        assertEquals("Link Text","Yahoo!\n",linkTag.getLinkText());        assertEquals("Link URL","http://www.yahoo.com",linkTag.getLink());        assertType("Fifth Node",FormTag.class,node[4]);    }    /**     * Bug 713907 reported by Dhaval Udani, erroneous     * parsing of form tag (even when form scanner is not

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -