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