javascript
  • selenium
  • svg
  • d3.js
  • 2013-05-13 71 views 2 likes 
    2

    我刚刚开始在硒工作,并在某些时候卡住,需要专家的帮助。在硒中选择g内SVG标记

    这里是我的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>带班pe_node内SVG

    任何帮助将不胜感激

    感谢

    回答

    0

    以下XPath应努力//div[@id='d3_tree']//g[contains(@class, 'pe_node')]

    +0

    谢谢@cherya我试过了,但它仍然返回[]括号:( – user2243651 2013-05-13 16:22:07

    +0

    您可以尝试使用css选择器。如果这个类是唯一的,它将如下所示:nodes = self.driver.find_elements(By.cssSelector(“。node pe_node”)); – Ievgen 2013-05-13 16:30:35

    +0

    我正在使用python lanuage,并得到一个AttributeError错误:type object'By'has no attribute'cssSelector – user2243651 2013-05-13 16:39:32

    0

    你能不能选择<svg>元素使用tagName

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

    谢谢@马克,但第二行代码不适合我:( – user2243651 2013-05-13 16:56:07

    +0

    对不起,我didn在你使用python绑定之前看不到。 尝试'node = driver.find_element_by_tag_name(“svg”)' 'nodes = node.find_element_by_xpath(“。/ g [contains(@class,'pe_node')]“)' 希望能给你一个'pe_nodes'的列表 – 2013-05-14 07:46:00

    0

    你可以试试这个,我不知道你是using.But下面硒将可能有助于you.Nodes将返回所有在SVG标签的元素与具有类为“节点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']") 
    
    +0

    谢谢@omkar我正在使用python语言,我试过你的代码,但它仍然没有工作:( – user2243651 2013-05-13 16:38:50

    +0

    我能够得到节点,但节点仍然[] – user2243651 2013-05-13 16:48:15

    +0

    不知道如何在python中编写代码,但节点= node.findElements(By.Xpath(“// g [@ class ='node pe_node' ]“)应该适合你。如果不存在其他问题 – Omkar 2013-05-13 16:50:44

    4

    你被半路,下面应该工作:

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

    内 'SVG' 的每个元素都被作为`/ * [名称()= '']

    引用在这种情况下,你可以缩短一点:

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

    这只会为我选择第一个'g'。 – gwg 2016-04-08 13:56:46

    相关问题