【发布时间】:2017-08-13 20:07:28
【问题描述】:
我正在尝试捕获和存储一些出现在 svg 元素中的文本,例如
<svg>
<g>
<text>Value to get</text>
</g>
</svg>
我有一个我正在使用的方法,它适用于其他元素,但是 Selenium WebElement 类方法 getText 不会为上述 svg 元素返回任何文本。
这是我的 xpath 在上面的例子中的样子
//*[local-name()='g']//*[local-name()='text']
我可以使用 findElement(By.xpath(myXpath)),但是当我对其调用 .getText() 时,它不会返回任何值,也不会引发任何错误。
我做错了什么,或者可能是替代方法吗?
另外值得注意的是,上述方法在 Windows 7 机器上运行良好,但在 Mac 上却不行。
【问题讨论】:
-
您是否尝试过类似 CSS 选择器
driver.findElement(By.cssSelector("svg > g > text")).getText();之类的简单方法?您是否检查过页面上有多少匹配项?也许你得到的第一个匹配实际上没有文本。打开 Chrome 开发控制台并输入$$("svg > g > text").length看看它返回的是否超过 1。 -
@JeffC,我之前没用过cssSelector,不过可以试试。如果我的原始示例中有多个文本元素,我如何才能唯一地获取一个元素,例如:
value 1 value 2 -
@har07 getAttribute 有效!
-
您是要从每个
<text>元素中提取文本还是仅从特定元素中提取文本?以下是一些 CSS 选择器参考:w3.org/TR/selectors/#selectors、saucelabs.com/resources/articles/selenium-tips-css-selectors。