1 27 package org.htmlparser.tests.tagTests; 28 29 import org.htmlparser.Node; 30 import org.htmlparser.Parser; 31 import org.htmlparser.PrototypicalNodeFactory; 32 import org.htmlparser.Remark; 33 import org.htmlparser.Tag; 34 import org.htmlparser.Text; 35 import org.htmlparser.filters.NodeClassFilter; 36 import org.htmlparser.tags.BodyTag; 37 import org.htmlparser.tags.FormTag; 38 import org.htmlparser.tags.HeadTag; 39 import org.htmlparser.tags.Html; 40 import org.htmlparser.tags.InputTag; 41 import org.htmlparser.tags.LinkTag; 42 import org.htmlparser.tags.OptionTag; 43 import org.htmlparser.tags.SelectTag; 44 import org.htmlparser.tags.TableTag; 45 import org.htmlparser.tags.TextareaTag; 46 import org.htmlparser.tests.ParserTestCase; 47 import org.htmlparser.util.NodeIterator; 48 import org.htmlparser.util.NodeList; 49 import org.htmlparser.util.ParserException; 50 51 public class FormTagTest extends ParserTestCase { 52 53 static 54 { 55 System.setProperty ("org.htmlparser.tests.tagTests.FormTagTest", "FormTagTest"); 56 } 57 58 public static final String FORM_HTML = 59 "<FORM METHOD=\""+FormTag.POST+"\" ACTION=\"do_login.php\" NAME=\"login_form\" onSubmit=\"return CheckData()\">\n"+ 60 "<TR><TD ALIGN=\"center\"> </TD></TR>\n"+ 61 "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>User Name</b></font></TD></TR>\n"+ 62 "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"text\" NAME=\"name\" SIZE=\"20\"></TD></TR>\n"+ 63 "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>Password</b></font></TD></TR>\n"+ 64 "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"password\" NAME=\"passwd\" SIZE=\"20\"></TD></TR>\n"+ 65 "<TR><TD ALIGN=\"center\"> </TD></TR>\n"+ 66 "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Login\"></TD></TR>\n"+ 67 "<TR><TD ALIGN=\"center\"> </TD></TR>\n"+ 68 "<TEXTAREA name=\"Description\" rows=\"15\" cols=\"55\" wrap=\"virtual\" class=\"composef\" tabindex=\"5\">Contents of TextArea</TEXTAREA>\n"+ 69 "<INPUT TYPE=\"hidden\" NAME=\"password\" SIZE=\"20\">\n"+ 71 "<INPUT TYPE=\"submit\">\n"+ 72 "</FORM>"; 73 74 public FormTagTest(String name) { 75 super(name); 76 } 77 78 public void assertTypeNameSize(String description,String type,String name,String size,InputTag inputTag) 79 { 80 assertEquals(description+" type",type,inputTag.getAttribute("TYPE")); 81 assertEquals(description+" name",name,inputTag.getAttribute("NAME")); 82 assertEquals(description+" size",size,inputTag.getAttribute("SIZE")); 83 } 84 85 public void assertTypeNameValue(String description,String type,String name,String value,InputTag inputTag) 86 { 87 assertEquals(description+" type",type,inputTag.getAttribute("TYPE")); 88 assertEquals(description+" name",name,inputTag.getAttribute("NAME")); 89 assertEquals(description+" value",value,inputTag.getAttribute("VALUE")); 90 } 91 92 public void testScan() throws ParserException 93 { 94 createParser(FORM_HTML,"http://www.google.com/test/index.html"); 95 parseAndAssertNodeCount(1); 96 assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag); 97 FormTag formTag = (FormTag)node[0]; 98 assertStringEquals("Method",FormTag.POST,formTag.getFormMethod()); 99 assertStringEquals("Location","http://www.google.com/test/do_login.php",formTag.getFormLocation()); 100 assertStringEquals("Name","login_form",formTag.getFormName()); 101 InputTag nameTag = formTag.getInputTag("name"); 102 InputTag passwdTag = formTag.getInputTag("passwd"); 103 InputTag submitTag = formTag.getInputTag("submit"); 104 InputTag dummyTag = formTag.getInputTag("dummy"); 105 assertNotNull("Input Name Tag should not be null",nameTag); 106 assertNotNull("Input Password Tag should not be null",passwdTag); 107 assertNotNull("Input Submit Tag should not be null",submitTag); 108 assertNull("Input dummy tag should be null",dummyTag); 109 110 assertTypeNameSize("Input Name Tag","text","name","20",nameTag); 111 assertTypeNameSize("Input Password Tag","password","passwd","20",passwdTag); 112 assertTypeNameValue("Input Submit Tag","submit","submit","Login",submitTag); 113 114 TextareaTag textAreaTag = formTag.getTextAreaTag("Description"); 115 assertNotNull("Text Area Tag should have been found",textAreaTag); 116 assertEquals("Text Area Tag Contents","Contents of TextArea",textAreaTag.getValue()); 117 assertNull("Should have been null",formTag.getTextAreaTag("junk")); 118 119 assertStringEquals("toHTML",FORM_HTML,formTag.toHtml()); 120 } 121 122 public void testScanFormWithNoEnding() throws Exception  123 { 124 createParser( 125 "<TABLE>\n"+ 126 "<FORM METHOD=\"post\" ACTION=\"do_login.php\" NAME=\"login_form\" onSubmit=\"return CheckData()\">\n"+ 127 "<TR><TD ALIGN=\"center\"> </TD></TR>\n"+ 128 "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>User Name</b></font></TD></TR>\n"+ 129 "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"text\" NAME=\"name\" SIZE=\"20\"></TD></TR>\n"+ 130 "<TR><TD ALIGN=\"center\"><FONT face=\"Arial, verdana\" size=2><b>Password</b></font></TD></TR>\n"+ 131 "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"password\" NAME=\"passwd\" SIZE=\"20\"></TD></TR>\n"+ 132 "<TR><TD ALIGN=\"center\"> </TD></TR>\n"+ 133 "<TR><TD ALIGN=\"center\"><INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\"Login\"></TD></TR>\n"+ 134 "<TR><TD ALIGN=\"center\"> </TD></TR>\n"+ 135 "<INPUT TYPE=\"hidden\" NAME=\"password\" SIZE=\"20\">\n"+ 136 "</TABLE>","http://www.google.com/test/index.html"); 137 138 parser.setNodeFactory ( 139 new PrototypicalNodeFactory ( 140 new Tag[] 141 { 142 new FormTag (), 143 new InputTag (), 144 new TextareaTag (), 145 new SelectTag (), 146 new OptionTag (), 147 })); 148 149 parseAndAssertNodeCount(4); 150 } 151 152 156 public void testScanFormWithLinks() throws ParserException 157 { 158 createParser( 159 "<form action=\"/search\" name=f><table cellspacing=0 cellpadding=0><tr><td width=75> "+ 160 "</td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie "+ 161 "value=\"UTF-8\"><input type=hidden name=oe value=\"UTF-8\"><input maxLength=256 size=55"+ 162 " name=q value=\"\"><br><input type=submit value=\"Google Search\" name=btnG><input type="+ 163 "submit value=\"I'm Feeling Lucky\" name=btnI></td><td valign=top nowrap><font size=-2>"+ 164 " • <a HREF=/advanced_search?hl=en>Advanced Search</a><br> •"+ 165 " <a HREF=/preferences?hl=en>Preferences</a><br> • <a HREF=/"+ 166 "language_tools?hl=en>Language Tools</a></font></td></tr></table></form>" 167 ); 168 169 parser.setNodeFactory ( 170 new PrototypicalNodeFactory ( 171 new Tag[] 172 { 173 new FormTag (), 174 new InputTag (), 175 new TextareaTag (), 176 new SelectTag (), 177 new OptionTag (), 178 new LinkTag (), 179 new TableTag (), 180 })); 181 parseAndAssertNodeCount(1); 182 assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag); 183 NodeList linkTags = new NodeList (); 184 NodeClassFilter filter = new NodeClassFilter (LinkTag.class); 185 for (NodeIterator e = ((FormTag)node[0]).children (); e.hasMoreNodes ();) 186 e.nextNode ().collectInto (linkTags, filter); 187 assertEquals("Link Tag Count",3,linkTags.size ()); 188 LinkTag[] linkTag = new LinkTag[3]; 189 linkTags.copyToNodeArray (linkTag); 190 assertEquals("First Link Tag Text","Advanced Search",linkTag[0].getLinkText()); 191 assertEquals("Second Link Tag Text","Preferences",linkTag[1].getLinkText()); 192 assertEquals("Third Link Tag Text","Language Tools",linkTag[2].getLinkText()); 193 } 194 197 public void testScanFormWithComments() throws ParserException { 198 createParser( 199 "<form action=\"/search\" name=f><table cellspacing=0 cellpadding=0><tr><td width=75> "+ 200 "</td><td align=center><input type=hidden name=hl value=en><input type=hidden name=ie "+ 201 "value=\"UTF-8\"><input type=hidden name=oe value=\"UTF-8\"><!-- Hello World -->"+ 202 "<input maxLength=256 size=55"+ 203 " name=q value=\"\"><br><input type=submit value=\"Google Search\" name=btnG><input type="+ 204 "submit value=\"I'm Feeling Lucky\" name=btnI></td><td valign=top nowrap><font size=-2>"+ 205 " • <a HREF=/advanced_search?hl=en>Advanced Search</a><br> •"+ 206 " <a HREF=/preferences?hl=en>Preferences</a><br> • <a HREF=/"+ 207 "language_tools?hl=en>Language Tools</a></font></td></tr></table></form>" 208 ); 209 210 parser.setNodeFactory ( 211 new PrototypicalNodeFactory ( 212 new Tag[] 213 { 214 new FormTag (), 215 new InputTag (), 216 new TextareaTag (), 217 new SelectTag (), 218 new OptionTag (), 219 new TableTag (), 220 })); 221 parseAndAssertNodeCount(1); 222 assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag); 223 NodeList remarkNodes = new NodeList (); 224 NodeClassFilter filter = new NodeClassFilter (Remark.class); 225 for (NodeIterator e = ((FormTag)node[0]).children (); e.hasMoreNodes ();) 226 e.nextNode ().collectInto (remarkNodes, filter); 227 assertEquals("Remark Node Count",1,remarkNodes.size ()); 228 assertEquals("First Remark Node"," Hello World ",remarkNodes.elementAt (0).toPlainTextString()); 229 } 230 233 public void testScanFormWithComments2() throws ParserException { 234 createParser( 235 "<FORM id=\"id\" name=\"name\" action=\"http://some.site/aPage.asp?id=97\" method=\"post\">\n"+ 236 " <!--\n"+ 237 " Just a Comment\n"+ 238 " -->\n"+ 239 "</FORM>"); 240 parseAndAssertNodeCount(1); 241 assertTrue("Should be a HTMLFormTag",node[0] instanceof FormTag); 242 FormTag formTag = (FormTag)node[0]; 243 Remark [] remarkNode = new Remark[10]; 244 int i = 0; 245 for (NodeIterator e=formTag.children();e.hasMoreNodes();) { 246 Node formNode = e.nextNode(); 247 if (formNode instanceof Remark) { 248 remarkNode[i++] = (Remark)formNode; 249 } 250 } 251 assertEquals("Remark Node Count",1,i); 252 } 253 254 258 public void testScanFormWithPreviousOpenLink() throws ParserException { 259 createParser( 260 "<A HREF=\"http://www.oygevalt.org/\">Home</A>\n"+ 261 "<P>\n"+ 262 "And now, the good stuff:\n"+ 263 "<P>\n"+ 264 "<A HREF=\"http://www.yahoo.com\">Yahoo!\n"+ 265 "<FORM ACTION=\".\" METHOD=\"GET\">\n"+ 266 "<INPUT TYPE=\"TEXT\">\n"+ 267 "<BR>\n"+ 268 "<A HREF=\"http://www.helpme.com\">Help</A> " + 269 "<INPUT TYPE=\"checkbox\">\n"+ 270 "<P>\n"+ 271 "<INPUT TYPE=\"SUBMIT\">\n"+ 272 "</FORM>" 273 ); 274 parseAndAssertNodeCount(8); 275 assertTrue("Seventh Node is a link",node[6] instanceof LinkTag); 276 LinkTag linkTag = (LinkTag)node[6]; 277 assertEquals("Link Text","Yahoo!\n",linkTag.getLinkText()); 278 assertEquals("Link URL","http://www.yahoo.com",linkTag.getLink()); 279 assertType("Eigth Node",FormTag.class,node[7]); 280 } 281 282 287 public void testFormScanningShouldNotHappen() throws Exception { 288 String testHTML = 289 "<HTML><HEAD><TITLE>Test Form Tag</TITLE></HEAD>" + 290 "<BODY><FORM name=\"form0\"><INPUT type=\"text\" name=\"text0\"></FORM>" + 291 "</BODY></HTML>"; 292 createParser( 293 testHTML 294 ); 295 ((PrototypicalNodeFactory)parser.getNodeFactory ()).unregisterTag (new FormTag ()); 296 Node [] nodes = 297 parser.extractAllNodesThatAre( 298 FormTag.class 299 ); 300 assertEquals( 301 "shouldnt have found form tag", 302 0, 303 nodes.length 304 ); 305 } 306 307 311 public void testUnclosedOptions () throws ParserException 312 { 313 String url = "http://htmlparser.sourceforge.net/test/overflowpage.html"; 314 int i; 315 Node[] nodes; 316 317 parser = new Parser(url); 318 PrototypicalNodeFactory factory = new PrototypicalNodeFactory (); 319 factory.unregisterTag (new Html ()); 321 factory.unregisterTag (new HeadTag ()); 322 factory.unregisterTag (new BodyTag ()); 323 parser.setNodeFactory (factory); 324 i = 0; 325 nodes = new Node[50]; 326 for (NodeIterator e = parser.elements(); e.hasMoreNodes();) 327 nodes[i++] = e.nextNode(); 328 assertEquals ("Expected nodes", 39, i); 329 } 330 331 public void testSetFormLocation() throws ParserException 332 { 333 createParser(FORM_HTML); 334 parseAndAssertNodeCount(1); 335 assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag); 336 FormTag formTag = (FormTag)node[0]; 337 338 formTag.setFormLocation("http://www.yahoo.com/yahoo/do_not_login.jsp"); 339 String expected = 340 FORM_HTML.substring (0, FORM_HTML.indexOf ("\"do_login.php\"")) 341 + "\"http://www.yahoo.com/yahoo/do_not_login.jsp\"" 342 + FORM_HTML.substring (FORM_HTML.indexOf ("\"do_login.php\"") + 14); 343 assertStringEquals("Raw String",expected,formTag.toHtml()); 344 } 345 346 public void testToPlainTextString() throws ParserException 347 { 348 createParser(FORM_HTML); 349 parseAndAssertNodeCount(1); 350 assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag); 351 FormTag formTag = (FormTag)node[0]; 352 assertStringEquals("Form Tag string representation","\n \nUser Name\n\nPassword\n\n \n\n \nContents of TextArea\n\n\n", formTag.toPlainTextString()); 353 } 354 355 public void testSearchFor() throws ParserException 356 { 357 createParser(FORM_HTML); 358 359 parser.setNodeFactory ( 360 new PrototypicalNodeFactory ( 361 new Tag[] 362 { 363 new FormTag (), 364 new InputTag (), 365 new TextareaTag (), 366 new SelectTag (), 367 new OptionTag (), 368 })); 369 parseAndAssertNodeCount(1); 370 assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag); 371 FormTag formTag = (FormTag)node[0]; 372 NodeList nodeList = formTag.searchFor("USER NAME"); 373 assertEquals("Should have found nodes",1,nodeList.size()); 374 375 Node[] nodes = nodeList.toNodeArray(); 376 377 assertEquals("Number of nodes found",1,nodes.length); 378 assertType("search result node",Text.class,nodes[0]); 379 Text stringNode = (Text)nodes[0]; 380 assertEquals("Expected contents of string node","User Name",stringNode.getText()); 381 } 382 383 public void testSearchForCaseSensitive() throws ParserException 384 { 385 createParser(FORM_HTML); 386 parseAndAssertNodeCount(1); 387 assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag); 388 FormTag formTag = (FormTag)node[0]; 389 NodeList nodeList = formTag.searchFor("USER NAME",true); 390 assertEquals("Should have not found nodes",0,nodeList.size()); 391 392 nodeList = formTag.searchFor("User Name",true); 393 assertNotNull("Should have not found nodes",nodeList); 394 } 395 396 397 public void testSearchByName() throws ParserException 398 { 399 createParser(FORM_HTML); 400 401 parser.setNodeFactory ( 402 new PrototypicalNodeFactory ( 403 new Tag[] 404 { 405 new FormTag (), 406 new InputTag (), 407 new TextareaTag (), 408 new SelectTag (), 409 new OptionTag (), 410 })); 411 parseAndAssertNodeCount(1); 412 assertTrue("Node 0 should be Form Tag",node[0] instanceof FormTag); 413 FormTag formTag = (FormTag)node[0]; 414 415 Tag tag= formTag.searchByName("passwd"); 416 assertNotNull("Should have found the password node",tag); 417 assertType("tag found",InputTag.class,tag); 418 } 419 420 424 public void testFormRendering() throws Exception  425 { 426 String testHTML = 427 "<HTML><HEAD><TITLE>Test Form Tag</TITLE></HEAD>" + 428 "<BODY><FORM name=\"form0\"><INPUT type=\"text\" name=\"text0\"></FORM>" + 429 "</BODY></HTML>"; 430 createParser( 431 testHTML 432 ); 433 FormTag formTag = 434 (FormTag)(parser.extractAllNodesThatAre( 435 FormTag.class 436 )[0]); 437 assertNotNull("Should have found a form tag",formTag); 438 assertStringEquals("name","form0",formTag.getFormName()); 439 assertNull("action",formTag.getAttribute("ACTION")); 440 assertXmlEquals( 441 "html", 442 "<FORM NAME=\"form0\">" + 443 "<INPUT TYPE=\"text\" NAME=\"text0\">" + 444 "</FORM>", 445 formTag.toHtml() 446 ); 447 } 448 449 455 public void testTextArea () throws Exception  456 { 457 FormTag formTag; 458 NodeList nl; 459 InputTag inpTag; 460 TextareaTag texTag; 461 462 String html = "<body onload=\"otextnloadHandler()\" onunload=\"closeAdvanced()\">\n" + 463 " <form name=\"searchForm\" onsubmit=\"doSearch()\">\n" + 464 " <table id=\"searchTable\" align=\"left\" valign=\"middle\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n" + 465 " <tbody><tr nowrap=\"\" valign=\"middle\">\n" + 466 " <td id=\"searchTD\">\n" + 467 " <label id=\"searchLabel\" for=\"searchWord\">\n" + 468 " Search:\n" + 469 " </label>\n" + 470 " </td>\n" + 471 "\n" + 472 " <td>\n" + 473 " <input type=\"text\" id=\"searchWord\" name=\"searchWord\" value=\"\" size=\"24\" maxlength=\"256\" alt=\"Search Expression\">\n" + 474 " </td>\n" + 475 " <td>\n" + 477 " <textarea name=\"mytextarea\" rows=\"1\" cols=\"12\" alt=\"Free Form Text\">\n" + 478 " The text.\n" + 479 " </textarea>\n" + 480 " </td>\n" + 481 " <td>\n" + 482 " <input type=\"button\" onclick=\"this.blur();doSearch()\" value=\"GO\" id=\"go\" alt=\"GO\">\n" + 483 " <input type=\"hidden\" name=\"maxHits\" value=\"500\">\n" + 484 " </td>\n" + 485 " <td nowrap=\"nowrap\">\n" + 486 "\n" + 487 " <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" + 488 " </td>\n" + 489 " <td nowrap=\"nowrap\">\n" + 490 " <input type=\"hidden\" name=\"workingSet\" value=\"All topics\">\n" + 491 " <div id=\"scope\">All topics</div>\n" + 492 " </td>\n" + 493 " </tr>\n" + 494 "\n" + 495 " </tbody></table>\n" + 496 " </form>\n" + 497 "\n" + 498 "</body>\n"; 499 createParser (html); 500 formTag = 501 (FormTag)(parser.extractAllNodesThatAre ( 502 FormTag.class 503 )[0]); 504 assertNotNull ("Should have found a form tag",formTag); 505 assertStringEquals ("name", "searchForm", formTag.getFormName ()); 506 nl = formTag.getFormInputs (); 507 assertTrue ("4 inputs", 4 == nl.size ()); 508 inpTag = (InputTag)nl.elementAt (0); 509 assertStringEquals ("name", "searchWord", inpTag.getAttribute ("name")); 510 assertStringEquals ("value", "", inpTag.getAttribute ("value")); 511 inpTag = (InputTag)nl.elementAt (1); 512 assertNull ("name", inpTag.getAttribute ("name")); 513 assertStringEquals ("value", "GO", inpTag.getAttribute ("value")); 514 inpTag = (InputTag)nl.elementAt (2); 515 assertStringEquals ("name", "maxHits", inpTag.getAttribute ("name")); 516 assertStringEquals ("value", "500", inpTag.getAttribute ("value")); 517 inpTag = (InputTag)nl.elementAt (3); 518 assertStringEquals ("name", "workingSet", inpTag.getAttribute ("name")); 519 assertStringEquals ("value", "All topics", inpTag.getAttribute ("value")); 520 nl = formTag.getFormTextareas (); 521 assertTrue ("1 textarea", 1 == nl.size ()); 522 texTag = (TextareaTag)nl.elementAt (0); 523 assertStringEquals ("name", "mytextarea", texTag.getAttribute ("name")); 524 assertTrue ("only 1 child", 1 == texTag.getChildCount ()); 525 assertStringEquals ("text contents", "\n The text.\n ", texTag.getChild (0).toHtml ()); 526 } 527 528 531 public void testInputInTable () throws Exception  532 { 533 FormTag formTag; 534 NodeList nl; 535 InputTag inpTag; 536 537 String html = "<html>\n" + 538 "<body>\n" + 539 "<form action=\"/cgi-bin/test.pl\" method=\"post\">\n" + 540 "<table><tr><td>\n" + 541 "<INPUT type=hidden NAME=\"test1\" VALUE=\"insidetable\">\n" + 542 "</td></tr>\n" + 543 "</table>\n" + 544 "<INPUT type=hidden NAME=\"Test2\"\n" + 545 "VALUE=\"outsidetable\">\n" + 546 "<INPUT type=hidden name=\"a\" value=\"b\">\n" + 547 "</form>\n" + 548 "</body>\n" + 549 "</html>\n"; 550 createParser (html); 551 formTag = 552 (FormTag)(parser.extractAllNodesThatAre ( 553 FormTag.class 554 )[0]); 555 assertNotNull ("Should have found a form tag",formTag); 556 nl = formTag.getFormInputs (); 557 assertTrue ("3 inputs", 3 == nl.size ()); 558 inpTag = (InputTag)nl.elementAt (0); 559 assertStringEquals ("name", "test1", inpTag.getAttribute ("name")); 560 assertStringEquals ("value", "insidetable", inpTag.getAttribute ("value")); 561 inpTag = (InputTag)nl.elementAt (1); 562 assertStringEquals ("name", "Test2", inpTag.getAttribute ("name")); 563 assertStringEquals ("value", "outsidetable", inpTag.getAttribute ("value")); 564 inpTag = (InputTag)nl.elementAt (2); 565 assertStringEquals ("name", "a", inpTag.getAttribute ("name")); 566 assertStringEquals ("value", "b", inpTag.getAttribute ("value")); 567 } 568 } 569
| Popular Tags
|