3

我刚刚开始在 selenium 中工作,并在某个时候卡住了,需要专家的帮助。

这是我的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")

但它仍然对我不起作用,我得到[]了结果。

谁能指导我如何<g>在 svg 中选择带有类 pe_node的

任何帮助将不胜感激

谢谢

4

5 回答 5

6

您已经完成了一半,以下应该可以工作:

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']")
于 2014-09-30T18:15:46.897 回答
0

遵循 xpath 应该可以工作//div[@id='d3_tree']//g[contains(@class, 'pe_node')]

于 2013-05-13T16:15:57.543 回答
0

您不能<svg>使用 选择元素tagName吗?

node = driver.findElement(By.tagName("svg"))
otherNodes = node.findElements(By.Xpath("./g[contains(@class, 'pe_node')]")
于 2013-05-13T16:22:14.647 回答
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']")
于 2013-05-13T16:24:22.320 回答
0

你可以这样写:

//div[@id='d3_tree']/*[name()='svg']/*[name()='g' and @class='node pe_node']/*[name()='g'][2]
于 2018-07-26T11:30:20.740 回答