2015-12-02 52 views
1

我使用硒进行任务,并尝试计算kibana图中元素的列表。寻找正确的xpath来计算元素

该文档就是这样

<div class="chart-wrapper"> 
    <div class="chart"> 
    <svg height="454" width="2031"> 
     <g clip-path="url(#chart-area256)" transform="translate(0,10)"> 
     <clipPath id="chart-area256"><rect height="439" width="2031" y="0" x="0"></rect> 
      </clipPath> 
      <g class="pathgroup 0"><path d="...."></path></g> 
      <g class="pathgroup 1"><path d=""></path></g> 
      <g class="pathgroup 2"><path d=""></path></g> 

      <g class="points area"> 
      ...</g> 
    </svg> 
    </div> 
</div> 

我查询所有g或所有@类= “路径组”

print(len(driver.find_elements_by_xpath('//g'))) 

print(len(driver.find_elements_by_xpath('//g[@class="pathgroup"]'))) 

两个返回零个元素一些原因。所以我也试过其他查询

len(driver.find_elements_by_xpath('//div[@class="chart"]')) 

// div [@ class =“chart”]看起来可以工作。 devtools返回svg,这是正确的。但是,当我尝试

$x('//div[@class="chart"]/svg').length #devtools command 

再次返回零。虽然

$x('//div[@class="chart"]/*').length #devtools command 

返回正确的值

我只是想知道为什么和怎么样!任何想法?因为没有这样的类作为“路径组”页上,但“路径组0”,“1路径组”

+0

http://stackoverflow.com/questions/8513691/using-xpath-count-with-contains? – JimmyB

+0

你使用正确的xpath?你怎么得到它? – fabersky

+0

@fabersky是的它的正确的xpath。现在我用'// div [@ class =“chart”]/*/*/*来获得我感兴趣的所有元素。但这不是有效的,并试图了解为什么如果我使用路径中的实际标签不起作用。 – b10n1k

回答

0

len(driver.find_elements_by_xpath('//g[@class="pathgroup"]'))将返回空列表...您需要执行以下代码:

driver.find_elements_by_xpath('//*[name()="g" and starts-with(@class, "pathgroup")]') 

尝试让我知道这工作还是不

+1

我放弃了devtools。它似乎没有工作。它返回一个空列表。 – b10n1k

0

的XPath有一个count功能尝试这个 -

driver.find_elements_by_xpath("count(//div[@class='chart-wrapper']//g)") 
+0

对于迟到的回复非常抱歉。我试了一下,但没有奏效。此外,我试图玩弄,但没有任何运气! – b10n1k

+0

尝试'driver.find_elements_by_xpath(“count(// div [@ class ='chart'] // g [@ class ='pathgroup'])”)' – SIslam

+0

在Firefox $ x上重新测试devtools(“count(/ /格[@类= '图表'] //克[@类= '路径组'])“)。返回“TypeError:表达式无法转换为返回指定的类型。” – b10n1k