1 38 package com.gargoylesoftware.htmlunit.html; 39 40 import java.util.ArrayList; 41 import java.util.Collections; 42 import java.util.List; 43 44 import com.gargoylesoftware.htmlunit.CollectingAlertHandler; 45 import com.gargoylesoftware.htmlunit.MockWebConnection; 46 import com.gargoylesoftware.htmlunit.WebClient; 47 import com.gargoylesoftware.htmlunit.WebTestCase; 48 49 56 public class HtmlAreaTest extends WebTestCase { 57 58 63 public HtmlAreaTest( final String name ) { 64 super( name ); 65 } 66 67 68 private WebClient createWebClient( final String onClick ) { 69 final String firstContent 70 = "<html><head><title>first</title></head><body>" 71 + "<img SRC='/images/planets.gif' width='145' height='126' usemap='#planetmap'>" 72 + "<map id='planetmap' name='planetmap'>" 73 + "<area shape='rect' onClick=\""+onClick+"\" coords='0,0,82,126' id='second' HREF='http://second'>" 74 + "<area shape='circle' coords='90,58,3' id='third' HREF='http://third'>" 75 + "</map></body></html>"; 76 final String secondContent 77 = "<html><head><title>second</title></head><body></body></html>"; 78 final String thirdContent 79 = "<html><head><title>third</title></head><body></body></html>"; 80 final WebClient client = new WebClient(); 81 82 final MockWebConnection webConnection = new MockWebConnection( client ); 83 webConnection.setResponse( 84 URL_FIRST, firstContent, 85 200, "OK", "text/html", Collections.EMPTY_LIST ); 86 webConnection.setResponse( 87 URL_SECOND, secondContent, 88 200, "OK", "text/html", Collections.EMPTY_LIST ); 89 webConnection.setResponse( 90 URL_THIRD, thirdContent, 91 200, "OK", "text/html", Collections.EMPTY_LIST ); 92 93 client.setWebConnection( webConnection ); 94 return client; 95 } 96 97 100 public void testClick() throws Exception { 101 102 final WebClient client = createWebClient(""); 103 104 final HtmlPage page = ( HtmlPage )client.getPage(URL_FIRST); 105 final HtmlArea area = ( HtmlArea )page.getHtmlElementById( "third" ); 106 107 final HtmlPage thirdPage = ( HtmlPage )area.click(); 109 assertEquals("third", thirdPage.getTitleText()); 110 } 111 112 113 116 public void testClick_onclickReturnsFalse() throws Exception { 117 118 final WebClient client = createWebClient("alert('foo');return false;"); 119 final List collectedAlerts = new ArrayList(); 120 client.setAlertHandler( new CollectingAlertHandler(collectedAlerts)); 121 122 final HtmlPage page = ( HtmlPage )client.getPage(URL_FIRST); 123 final HtmlArea area = ( HtmlArea )page.getHtmlElementById( "second" ); 124 125 final HtmlPage thirdPage = ( HtmlPage )area.click(); 126 assertEquals( Collections.singletonList("foo"), collectedAlerts); 127 assertEquals("first", thirdPage.getTitleText()); 128 } 129 130 133 public void testClick_onclickReturnsTrue() throws Exception { 134 135 final WebClient client = createWebClient("alert('foo');return true;"); 136 final List collectedAlerts = new ArrayList(); 137 client.setAlertHandler( new CollectingAlertHandler(collectedAlerts)); 138 139 final HtmlPage page = ( HtmlPage )client.getPage(URL_FIRST); 140 final HtmlArea area = ( HtmlArea )page.getHtmlElementById( "second" ); 141 142 final HtmlPage thirdPage = ( HtmlPage )area.click(); 143 assertEquals( Collections.singletonList("foo"), collectedAlerts); 144 assertEquals("second", thirdPage.getTitleText()); 145 } 146 } 147 | Popular Tags |