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

📄 formtagtest.java

📁 html to xml convertor
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * registered)     */    public void testFormScanningShouldNotHappen() throws Exception {        String testHTML =            "<HTML><HEAD><TITLE>Test Form Tag</TITLE></HEAD>" +            "<BODY><FORM name=\"form0\"><INPUT type=\"text\" name=\"text0\"></FORM>" +            "</BODY></HTML>";        createParser(            testHTML        );        ((PrototypicalNodeFactory)parser.getNodeFactory ()).unregisterTag (new FormTag ());        NodeList nodes =            parser.extractAllNodesThatMatch (new NodeClassFilter (                FormTag.class            ));        assertEquals(            "shouldn't have found form tag",            0,            nodes.size ()        );    }    /**     * See bug #745566 StackOverflowError on select with too many unclosed options.     * Under Windows this throws a stack overflow exception.     */    public void testUnclosedOptions () throws ParserException    {        String url = "http://htmlparser.sourceforge.net/test/overflowpage.html";        int i;        Node[] nodes;        parser = new Parser(url);        PrototypicalNodeFactory factory = new PrototypicalNodeFactory ();        // we want to expose the repetitive tags        factory.unregisterTag (new Html ());        factory.unregisterTag (new HeadTag ());        factory.unregisterTag (new BodyTag ());        factory.unregisterTag (new ParagraphTag ());        parser.setNodeFactory (factory);        i = 0;        nodes = new Node[50];        for (NodeIterator e = parser.elements(); e.hasMoreNodes();)            nodes[i++] = e.nextNode();        assertEquals ("Expected nodes", 39, i);    }        public void testSetFormLocation() throws ParserException    {        createParser(FORM_HTML);        parseAndAssertNodeCount(1);        assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        formTag.setFormLocation("http://www.yahoo.com/yahoo/do_not_login.jsp");        String expected =             FORM_HTML.substring (0, FORM_HTML.indexOf ("\"do_login.php\""))            + "\"http://www.yahoo.com/yahoo/do_not_login.jsp\""            + FORM_HTML.substring (FORM_HTML.indexOf ("\"do_login.php\"") + 14);        assertStringEquals("Raw String",expected,formTag.toHtml());    }    public void testToPlainTextString() throws ParserException    {        createParser(FORM_HTML);        parseAndAssertNodeCount(1);        assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        assertStringEquals("Form Tag string representation","\n&nbsp;\nUser Name\n\nPassword\n\n&nbsp;\n\n&nbsp;\nContents of TextArea\n\n\n", formTag.toPlainTextString());    }    public void testSearchFor() throws ParserException    {        createParser(FORM_HTML);        parser.setNodeFactory (            new PrototypicalNodeFactory (                new Tag[]                {                    new FormTag (),                    new InputTag (),                    new TextareaTag (),                    new SelectTag (),                    new OptionTag (),                }));        parseAndAssertNodeCount(1);        assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        NodeList nodeList = formTag.searchFor("USER NAME");        assertEquals("Should have found nodes",1,nodeList.size());        Node[] nodes = nodeList.toNodeArray();        assertEquals("Number of nodes found",1,nodes.length);        assertType("search result node",Text.class,nodes[0]);        Text stringNode = (Text)nodes[0];        assertEquals("Expected contents of string node","User Name",stringNode.getText());    }    public void testSearchForCaseSensitive() throws ParserException    {        createParser(FORM_HTML);        parseAndAssertNodeCount(1);        assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        NodeList nodeList = formTag.searchFor("USER NAME",true);        assertEquals("Should have not found nodes",0,nodeList.size());        nodeList = formTag.searchFor("User Name",true);        assertNotNull("Should have not found nodes",nodeList);    }    public void testSearchByName() throws ParserException    {        createParser(FORM_HTML);        parser.setNodeFactory (            new PrototypicalNodeFactory (                new Tag[]                {                    new FormTag (),                    new InputTag (),                    new TextareaTag (),                    new SelectTag (),                    new OptionTag (),                }));        parseAndAssertNodeCount(1);        assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag);        FormTag formTag = (FormTag)node[0];        Tag tag= formTag.searchByName("passwd");        assertNotNull("Should have found the password node",tag);        assertType("tag found",InputTag.class,tag);    }    /**     * Bug 713907 reported by Dhaval Udani, erroneous     * attributes being reported.     */    public void testFormRendering() throws Exception    {        String testHTML =            "<HTML><HEAD><TITLE>Test Form Tag</TITLE></HEAD>" +            "<BODY><FORM name=\"form0\"><INPUT type=\"text\" name=\"text0\"></FORM>" +            "</BODY></HTML>";        createParser(            testHTML        );        FormTag formTag =            (FormTag)(parser.extractAllNodesThatMatch (new NodeClassFilter (                FormTag.class            )).elementAt (0));        assertNotNull("Should have found a form tag",formTag);        assertStringEquals("name","form0",formTag.getFormName());        assertNull("action",formTag.getAttribute("ACTION"));        assertXmlEquals(            "html",            "<FORM NAME=\"form0\">" +                "<INPUT TYPE=\"text\" NAME=\"text0\">" +            "</FORM>",            formTag.toHtml()        );    }    /**     * From support request #772998 Cannot extract input tags     * The getFormInputs list was reporting zero size and textarea tags were     * in the inputs list.     * Neither of these was reproducible.     */    public void testTextArea () throws Exception    {        FormTag formTag;        NodeList nl;        InputTag inpTag;        TextareaTag texTag;                String html = "<body onload=\"otextnloadHandler()\" onunload=\"closeAdvanced()\">\n" +            "	<form name=\"searchForm\" onsubmit=\"doSearch()\">\n" +            "		<table id=\"searchTable\" align=\"left\" valign=\"middle\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n" +            "			<tbody><tr nowrap=\"\" valign=\"middle\">\n" +            "				<td id=\"searchTD\">\n" +            "					<label id=\"searchLabel\" for=\"searchWord\">\n" +            "					 Search:\n" +            "					</label>\n" +            "				</td>\n" +            "\n" +            "				<td>\n" +            "					<input type=\"text\" id=\"searchWord\" name=\"searchWord\" value=\"\" size=\"24\" maxlength=\"256\" alt=\"Search Expression\">\n" +            "				</td>\n" +            // note: this was added as there weren't any textarea tags in the page referenced            "				<td>\n" +            "					<textarea name=\"mytextarea\" rows=\"1\" cols=\"12\" alt=\"Free Form Text\">\n" +            "					   The text.\n" +            "					</textarea>\n" +            "				</td>\n" +            "				<td>\n" +            "					 <input type=\"button\" onclick=\"this.blur();doSearch()\" value=\"GO\" id=\"go\" alt=\"GO\">\n" +            "					<input type=\"hidden\" name=\"maxHits\" value=\"500\">\n" +            "				</td>\n" +            "				<td nowrap=\"nowrap\">\n" +            "\n" +            "					<a id=\"scopeLabel\" href=\"javascript:openAdvanced();\" title=\"Search only the following topics\" alt=\"Search only the following topics\" onmouseover=\"window.status='Search only the following topics'; return true;\" onmouseout=\"window.status='';\">Search scope:</a>\n" +            "				</td>\n" +            "				<td nowrap=\"nowrap\">\n" +            "					<input type=\"hidden\" name=\"workingSet\" value=\"All topics\">\n" +            "					<div id=\"scope\">All topics</div>\n" +            "				</td>\n" +            "			</tr>\n" +            "\n" +            "		</tbody></table>\n" +            "	</form>\n" +            "\n" +            "</body>\n";        createParser (html);        formTag =            (FormTag)(parser.extractAllNodesThatMatch (new NodeClassFilter (                FormTag.class            )).elementAt (0));        assertNotNull ("Should have found a form tag",formTag);        assertStringEquals ("name", "searchForm", formTag.getFormName ());        nl = formTag.getFormInputs ();        assertTrue ("4 inputs", 4 == nl.size ());        inpTag = (InputTag)nl.elementAt (0);        assertStringEquals ("name", "searchWord", inpTag.getAttribute ("name"));        assertStringEquals ("value", "", inpTag.getAttribute ("value"));        inpTag = (InputTag)nl.elementAt (1);        assertNull ("name", inpTag.getAttribute ("name"));        assertStringEquals ("value", "GO", inpTag.getAttribute ("value"));        inpTag = (InputTag)nl.elementAt (2);        assertStringEquals ("name", "maxHits", inpTag.getAttribute ("name"));        assertStringEquals ("value", "500", inpTag.getAttribute ("value"));        inpTag = (InputTag)nl.elementAt (3);        assertStringEquals ("name", "workingSet", inpTag.getAttribute ("name"));        assertStringEquals ("value", "All topics", inpTag.getAttribute ("value"));        nl = formTag.getFormTextareas ();        assertTrue ("1 textarea", 1 == nl.size ());        texTag = (TextareaTag)nl.elementAt (0);        assertStringEquals ("name", "mytextarea", texTag.getAttribute ("name"));        assertTrue ("only 1 child", 1 == texTag.getChildCount ());        assertStringEquals ("text contents", "\n					   The text.\n					", texTag.getChild (0).toHtml ());    }    /**     * From bug #825645 <input> not getting parsed inside table     */    public void testInputInTable () throws Exception    {        FormTag formTag;        NodeList nl;        InputTag inpTag;        String html = "<html>\n" +            "<body>\n" +            "<form action=\"/cgi-bin/test.pl\" method=\"post\">\n" +            "<table><tr><td>\n" +            "<INPUT type=hidden NAME=\"test1\" VALUE=\"insidetable\">\n" +            "</td></tr>\n" +            "</table>\n" +            "<INPUT type=hidden NAME=\"Test2\"\n" +            "VALUE=\"outsidetable\">\n" +            "<INPUT type=hidden name=\"a\" value=\"b\">\n" +            "</form>\n" +            "</body>\n" +            "</html>\n";        createParser (html);        formTag =            (FormTag)(parser.extractAllNodesThatMatch (new NodeClassFilter (                FormTag.class            )).elementAt (0));        assertNotNull ("Should have found a form tag",formTag);        nl = formTag.getFormInputs ();        assertTrue ("3 inputs", 3 == nl.size ());        inpTag = (InputTag)nl.elementAt (0);        assertStringEquals ("name", "test1", inpTag.getAttribute ("name"));        assertStringEquals ("value", "insidetable", inpTag.getAttribute ("value"));        inpTag = (InputTag)nl.elementAt (1);        assertStringEquals ("name", "Test2", inpTag.getAttribute ("name"));        assertStringEquals ("value", "outsidetable", inpTag.getAttribute ("value"));        inpTag = (InputTag)nl.elementAt (2);        assertStringEquals ("name", "a", inpTag.getAttribute ("name"));        assertStringEquals ("value", "b", inpTag.getAttribute ("value"));    }}

⌨️ 快捷键说明

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