У меня есть объект SVG с несколькими элементами окружности и прямоугольника. Используя webdriver, я могу щелкнуть по основному объекту svg, но ни один из элементов внутри него. Проблема только в том, что при нажатии (или любом взаимодействии с мышью) возникает проблема, так как я могу использовать getAttribute() для возврата значений (-ов) ширины, ID, x/y, текста и т.д. Для чего-либо под ним.
Вот пример HTML:
<div id="canvas">
<svg height="840" version="1.1" width="757" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;">
<image x="0" y="0" width="757" height="840" preserveAspectRatio="none">
<circle cx="272.34" cy="132.14">
<rect x="241.47" y="139.23">
<text style="text-anchor: middle; x="272.47" y="144.11">
</svg>
</div>
И пример WebDriver, пытающийся щелкнуть правой кнопкой мыши элемент прямоугольника (и не выполнить):
WebElement mapObject = driver.findElement(By.xpath("//*[name()='svg']/*[name()='rect']"));
Actions builder = new Actions(driver);
builder.contextClick(mapObject).perform();
Но это работает и возвращает значение:
driver.findElement(By.xpath("//*[name()='svg']/*[name()='rect']")).getAttribute("x");
При ошибках WebDriver обычно это:
org.openqa.selenium.WebDriverException: '[JavaScript Error: "a.scrollIntoView is not a function" {file: "file:///var/folders/sm/jngvd6s97ldb916b7h25d57r0000gn/T/anonymous490577185394048506webdriver-profile/extensions/[email protected]/components/synthetic_mouse.js" line: 8544}]' when calling method: [wdIMouse::move]
Я потратил некоторое время на исследование этого вопроса, и это, похоже, является довольно распространенной проблемой для Selenium и SVG, однако мне интересно, есть ли способ обхода проблемы. Единственные решения, которые я нашел, взаимодействуют с самим SVG, что я уже могу сделать.
Я использую Selenium 2.28 (и пробовал 2.29) с Java + Firefox 17.
Любые идеи получили высокую оценку.