1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.html;
16
17 import org.htmlunit.WebDriverTestCase;
18 import org.htmlunit.junit.annotation.Alerts;
19 import org.junit.jupiter.api.Test;
20 import org.openqa.selenium.WebDriver;
21 import org.openqa.selenium.htmlunit.HtmlUnitDriver;
22
23
24
25
26
27
28
29 public class HtmlUnknownElementTest extends WebDriverTestCase {
30
31
32
33
34 @Test
35 @Alerts({"[object HTMLUnknownElement]", "[object HTMLUnknownElement]", "[object HTMLElement]"})
36 public void simpleScriptable() throws Exception {
37 final String html = DOCTYPE_HTML
38 + "<html><head>\n"
39 + "<script>\n"
40 + LOG_TITLE_FUNCTION
41 + " function test() {\n"
42 + " log(document.getElementById('myId1'));\n"
43 + " log(document.getElementById('myId2'));\n"
44 + " log(document.getElementById('myId3'));\n"
45 + " }\n"
46 + "</script>\n"
47 + "</head><body onload='test()'>\n"
48 + "<xml id='myId1'/>\n"
49 + "<doesnt_exist id='myId2'/>\n"
50 + "<doesnt-exist id='myId3'/>\n"
51 + "</body></html>";
52
53 final WebDriver driver = loadPageVerifyTitle2(html);
54 if (driver instanceof HtmlUnitDriver) {
55 final HtmlPage page = (HtmlPage) getEnclosedPage();
56 assertTrue(HtmlUnknownElement.class.isInstance(page.getHtmlElementById("myId1")));
57 assertTrue(HtmlUnknownElement.class.isInstance(page.getHtmlElementById("myId2")));
58 assertTrue(HtmlUnknownElement.class.isInstance(page.getHtmlElementById("myId3")));
59 }
60 }
61
62
63
64
65 @Test
66 @Alerts({"[object HTMLUnknownElement]", "[object HTMLUnknownElement]", "[object HTMLElement]"})
67 public void simpleScriptable_strict() throws Exception {
68 final String header = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
69 + "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
70 final String html = header + "<html><head>\n"
71 + "<script>\n"
72 + LOG_TITLE_FUNCTION
73 + " function test() {\n"
74 + " log(document.getElementById('myId1'));\n"
75 + " log(document.getElementById('myId2'));\n"
76 + " log(document.getElementById('myId3'));\n"
77 + " }\n"
78 + "</script>\n"
79 + "</head><body onload='test()'>\n"
80 + "<xml id='myId1'/>\n"
81 + "<doesnt_exist id='myId2'/>\n"
82 + "<doesnt-exist id='myId3'/>\n"
83 + "</body></html>";
84
85 final WebDriver driver = loadPageVerifyTitle2(html);
86 if (driver instanceof HtmlUnitDriver) {
87 final HtmlPage page = (HtmlPage) getEnclosedPage();
88 assertTrue(HtmlUnknownElement.class.isInstance(page.getHtmlElementById("myId1")));
89 assertTrue(HtmlUnknownElement.class.isInstance(page.getHtmlElementById("myId2")));
90 assertTrue(HtmlUnknownElement.class.isInstance(page.getHtmlElementById("myId3")));
91 }
92 }
93
94
95
96
97 @Test
98 public void asXml() throws Exception {
99 final String html = DOCTYPE_HTML
100 + "<html><body><title>foo</title>\n"
101 + "<foo></foo>\n"
102 + "</body></html>";
103
104 final WebDriver driver = loadPage2(html);
105
106 final String xml = driver.getPageSource();
107 assertTrue("Node not expanded in: " + xml, xml.contains("</foo>"));
108 }
109 }