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.svg;
16  
17  import static java.nio.charset.StandardCharsets.ISO_8859_1;
18  
19  import org.htmlunit.WebDriverTestCase;
20  import org.junit.jupiter.api.Test;
21  import org.openqa.selenium.By;
22  import org.openqa.selenium.WebDriver;
23  import org.openqa.selenium.WebElement;
24  
25  /**
26   * Tests for running JavaScripts in SVG elements..
27   *
28   * @author Ahmed Ashour
29   */
30  public class SvgJavaScriptTest extends WebDriverTestCase {
31  
32      /**
33       * @throws Exception if the test fails
34       */
35      @Test
36      public void onclick() throws Exception {
37          final String html = ""
38              + "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
39              + "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" baseProfile=\"full\" width=\"100px\""
40              + " height=\"100px\" viewBox=\"0 0 100 100\">\n"
41              + "  <rect id=\"rect\" width=\"50\" height=\"50\" fill=\"blue\" "
42              + "onclick=\"document.getElementById('rect').setAttribute('fill', 'green')\" />\n"
43              + "</svg>";
44  
45          final WebDriver driver = loadPage2(html, URL_FIRST, "image/svg+xml", ISO_8859_1);
46          final WebElement rect = driver.findElement(By.id("rect"));
47  
48          assertEquals("blue", rect.getDomAttribute("fill"));
49          rect.click();
50          assertEquals("green", rect.getDomAttribute("fill"));
51      }
52  }
53