在selenium中选择SV内部的gG标签

时间:2013-05-13 16:06:09

标签: javascript selenium svg d3.js

我刚刚开始从事硒工作,并且在某些方面陷入困境,需要专家的帮助。

这是我的HTML

<div id='d3_tree'>
   <svg>
     <g transform="translate(20,50)>
        <g class='node'>
        </g> 
        <g class='node pe_node'>
        </g>
        <g class='node pe_node'>
        </g> 
     </g>
   </svg>
</div>

我需要让所有<g>拥有类pe_node并在这些<g>上调用上下文菜单 我试图像这样获得svg

node = self.driver.find_elements(By.XPATH, "//div[@id='d3_tree']/'svg']/g")

然后我读到svg无法直接选择所以我试过这个

nodes = self.driver.find_elements(By.XPATH, "//div[@id='d3_tree']/*[name()='svg']/g")

  nodes = self.driver.find_elements(By.XPATH, "//div[@id='d3_tree']/*[local-name()='svg']/g")

但它仍然不适合我,我的结果是[]

任何人都可以指导我如何在svg

中选择带有类pe_node的<g>

任何帮助将不胜感激

由于

5 个答案:

答案 0 :(得分:4)

你在那里,以下应该有效:

nodes = self.driver.find_elements(By.XPATH, "//div[@id='d3_tree']/*[name()='svg']/*[name()='g']")

'svg'中的每个元素都必须被引用为`/ * [name()='']

在这种情况下,你可以用以下方法缩短它:

nodes = self.driver.find_elements(By.XPATH, "//div[@id='d3_tree']/*/*[name()='g']")

答案 1 :(得分:0)

以下xpath应该有效//div[@id='d3_tree']//g[contains(@class, 'pe_node')]

答案 2 :(得分:0)

您是否可以使用<svg>

选择tagName元素
node = driver.findElement(By.tagName("svg"))
otherNodes = node.findElements(By.Xpath("./g[contains(@class, 'pe_node')]")

答案 3 :(得分:0)

你可以尝试这个,我不知道你正在使用哪种语言。但是下面的selenium可能会对你有所帮助。节点将返回svg标签下的所有元素,其类为“node pe_node”。

node = self.driver.find_element(By.XPATH, "//div[@id='d3_tree']/svg]")
nodes = node.find_elements(By.XPATH,"//g[@class='node pe_node']")

答案 4 :(得分:0)

您可以这样写:

//div[@id='d3_tree']/*[name()='svg']/*[name()='g' and @class='node pe_node']/*[name()='g'][2]