无法获取moveToElement在Selenium上显示SVG元素的工具提示

时间:2016-06-18 19:02:09

标签: selenium xpath svg selenium-webdriver

我一直在研究这个测试脚本,我无法将其鼠标悬停在SVG中的元素上以显示工具提示。

我已将其存储在变量中并能够使用xpath输出属性,但是当我使用moveToElement调用它时,它不起作用。

这是我正在使用的xpath:

//*[name()='svg']/*[name()='g'][@class='highcharts-series-group']/*[name()='g'][18]/*[name()='path'][2]

但是这个xpath有效:

//*[name()='svg']/*[name()='g'][@class='highcharts-series-group']/*[name()='g'][18]/*[name()='path'][1]

我也试过[stats-with。,val]但没有成功。

更新: 添加元素的html

<g class="highcharts-markers highcharts-tracker" visibility="visible" zIndex="12" transform="translate(0,26) scale(1 1)" clip-path="url(#highcharts-438)" style="">
    <path fill="#bdc94b" d="M 440 295.19999990878046 C 445.328 295.19999990878046 445.328 303.19999990878046 440 303.19999990878046 C 434.672 303.19999990878046 434.672 295.19999990878046 440 295.19999990878046 Z"></path>
    <path fill="#bdc94b" d="M 417 292.4634146341463 C 422.328 292.4634146341463 422.328 300.4634146341463 417 300.4634146341463 C 411.672 300.4634146341463 411.672 292.4634146341463 417 292.4634146341463 Z"></path></g>

更新

所以在使用.click()。build()。perform();我现在收到一个元素不可点击的错误消息。事实证明,在后来的标签中有另一个元素覆盖了图。对此有什么好处?

1 个答案:

答案 0 :(得分:0)

第一个(失败的)xpath正在寻找第二个&lt; path&gt;元素,而你的第二个(工作)xpath获取第一个路径元素。在我看来,源文件只有一个&lt; path&gt;第18组中的元素。

顺便说一句,xpath可以简化,因此更容易阅读,效率更高。

//svg/g[@class='highcharts-series-group']/g[18]/path[1]

因为/ * [name()=&#39; {nodename}&#39;]相当于/ {nodename}