View Javadoc
1   /*
2    * Copyright (c) 2002-2025 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
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.By;
21  import org.openqa.selenium.WebDriver;
22  import org.openqa.selenium.htmlunit.HtmlUnitDriver;
23  
24  /**
25   * Tests for {@link HtmlInsertedText}, and {@link HtmlDeletedText}.
26   *
27   * @author Ahmed Ashour
28   * @author Ronald Brill
29   */
30  public class HtmlModificationTest extends WebDriverTestCase {
31  
32      /**
33       * Verifies getVisibleText().
34       * @throws Exception if the test fails
35       */
36      @Test
37      @Alerts("Some text is inserted or deleted")
38      public void getVisibleText() throws Exception {
39          final String html = DOCTYPE_HTML
40                  + "<html><head></head>\n"
41                  + "<body id='tester'>\n"
42                  + "  Some text is <ins id='myId1'>inserted</ins> or <del id='myId2'>deleted</del>\n"
43                  + "</body></html>";
44  
45          final WebDriver driver = loadPage2(html);
46          final String text = driver.findElement(By.id("tester")).getText();
47          assertEquals(getExpectedAlerts()[0], text);
48  
49          if (driver instanceof HtmlUnitDriver) {
50              final HtmlPage page = (HtmlPage) getEnclosedPage();
51              assertEquals(getExpectedAlerts()[0], page.getElementById("tester").getVisibleText());
52          }
53      }
54  
55      /**
56       * @throws Exception if the test fails
57       */
58      @Test
59      @Alerts({"[object HTMLModElement]", "[object HTMLModElement]"})
60      public void simpleScriptable() throws Exception {
61          final String html = DOCTYPE_HTML
62              + "<html><head>\n"
63              + "<script>\n"
64              + LOG_TITLE_FUNCTION
65              + "  function test() {\n"
66              + "    log(document.getElementById('myId1'));\n"
67              + "    log(document.getElementById('myId2'));\n"
68              + "  }\n"
69              + "</script>\n"
70              + "</head><body onload='test()'>\n"
71              + "  Some text is <ins id='myId1'>inserted</ins> or <del id='myId2'>deleted</del>\n"
72              + "</body></html>";
73  
74          //both values should be HTMLModElement
75          //see http://forums.mozillazine.org/viewtopic.php?t=623715
76  
77          final WebDriver driver = loadPageVerifyTitle2(html);
78          if (driver instanceof HtmlUnitDriver) {
79              final HtmlPage page = (HtmlPage) getEnclosedPage();
80              assertTrue(HtmlInsertedText.class.isInstance(page.getHtmlElementById("myId1")));
81              assertTrue(HtmlDeletedText.class.isInstance(page.getHtmlElementById("myId2")));
82          }
83      }
84  }