如何使用count()函数获取具有特定内部标记数的元素

时间:2016-04-19 21:09:44

标签: java selenium xpath selenium-webdriver selenium-chromedriver

我正在使用Java和Selenium编写测试。在我的DOM中,我有两个svg标记。其中一个有2个内部path标签。我需要得到svg所以我用过:

wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(
                        "//*[local-name() = 'svg' and count(.//path)>'2']")));

 wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(
                            "//*[local-name() = 'svg'] [count(.//path)>'2']")));

但它不起作用。我需要知道这有什么问题,所以请提供其他方法。谢谢。

顺便说一下:

//*[local-name() = 'svg' and count(.//*[local-name() = 'path' ])>'1']

//*[local-name() = 'svg'][ count(.//*[local-name() = 'path' ])>'1']

1 个答案:

答案 0 :(得分:0)

问题是你试图找到.//path这是SVG元素。据我所知,你不能这样做,因为SVG元素来自不同的命名空间。正如您在问题中提到的,您可以使用[local-name() = 'path' ]进行修复。解决方法是使用JSExecutor执行方法document.evaluate(),以便您可以指定SVG的命名空间。请参阅此post的示例。