在硒中的SVG标签中选择g

use*_*651 3 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>
Run Code Online (Sandbox Code Playgroud)

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

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

那么我已经读过svg不能直接选择,所以我尝试了

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

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

但这仍然对我不起作用,我正在取得[]成果。

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

任何帮助将不胜感激

谢谢

FBe*_*old 5

您在其中途,以下应该可以工作:

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

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

在这种情况下,您可以使用以下方法将其缩短:

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