我使用selenium执行任务,并尝试计算kibana图表中的元素列表。
文档就是那样
<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或所有@ class =“pathgroup”
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 :(得分:0)
len(driver.find_elements_by_xpath('//g[@class="pathgroup"]'))
将返回空列表,因为页面上没有“pathgroup”这样的类,但是“pathgroup 0”,“pathgroup 1”...您需要实现以下代码:
driver.find_elements_by_xpath('//*[name()="g" and starts-with(@class, "pathgroup")]')
尝试让我知道这项工作是否合适
答案 1 :(得分:0)
Xpath有一个count
函数试试这个 -
driver.find_elements_by_xpath("count(//div[@class='chart-wrapper']//g)")