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类
任何帮助将不胜感激
谢谢
您在其中途,以下应该可以工作:
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)