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