From: <rb...@us...> - 2017-12-22 14:21:38
|
Revision: 15033 http://sourceforge.net/p/htmlunit/code/15033 Author: rbri Date: 2017-12-22 14:21:35 +0000 (Fri, 22 Dec 2017) Log Message: ----------- click from javascript works also for hidden elements Issue 1939 Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLImageElementTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2017-12-21 18:22:46 UTC (rev 15032) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2017-12-22 14:21:35 UTC (rev 15033) @@ -1358,7 +1358,8 @@ */ @JsxFunction public void click() throws IOException { - getDomNodeOrDie().click(); + // when triggered from js the visibility is ignored + getDomNodeOrDie().click(false, false, false, true, true, false); } /** Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLImageElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLImageElementTest.java 2017-12-21 18:22:46 UTC (rev 15032) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLImageElementTest.java 2017-12-22 14:21:35 UTC (rev 15033) @@ -666,4 +666,39 @@ + "</html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({"myImage clicked", "myImageDisplayNone clicked"}) + public void click() throws Exception { + try (InputStream is = getClass().getClassLoader().getResourceAsStream("testfiles/tiny-jpg.img")) { + final byte[] directBytes = IOUtils.toByteArray(is); + final URL urlImage = new URL(URL_FIRST, "img.jpg"); + final List<NameValuePair> emptyList = Collections.emptyList(); + getMockWebConnection().setResponse(urlImage, directBytes, 200, "ok", "image/jpg", emptyList); + } + + final String html = "<html><head>\n" + + "<script>\n" + + " function test() {\n" + + " var img = document.getElementById('myImage');\n" + + " img.click();\n" + + " img = document.getElementById('myImageDisplayNone');\n" + + " img.click();\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + " <img id='myImage' src='\" + URL_SECOND + \"img.jpg' onclick='alert(\"myImage clicked\");'>\n" + + " <img id='myImageDisplayNone' src='\" + URL_SECOND + \"img.jpg' style='display: none'" + + " onclick='alert(\"myImageDisplayNone clicked\");'>\n" + + "</body></html>"; + + final WebDriver driver = getWebDriver(); + if (driver instanceof HtmlUnitDriver) { + ((HtmlUnitDriver) driver).setDownloadImages(true); + } + loadPageWithAlerts2(html); + } } |