Это обсуждение на github: https://github.com/kazurayam/KatalonDiscussion4977.
Для базового доступного приложения здесь , HTML-код элемента SVG
, который мы пытаемся получить, равен
<html>
<body>
<div id="hs-component">
<div class="container">
<div id="wrap">
...
<div class="... demo">
...
<div class="chart-container">
<div id="container">
<div id="highcharts-0x1te9k-0">
<svg xmlns="http://http://www.w3.org/2000/svg" ...>
...
<text class="highcharts-title">
<tspan>Solar Employment Growth by Sector, 2010-2016</tspan>
</text>
...
</svg>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Следующий селектор XPath
не работал:
//div[@id="container"]/div/svg
при выдаче предупреждением Katalon
com.kms.katalon.core.webui.exception.WebElementNotFoundException: Web element with id: 'Object Repository/Page_Basic line/svg_namespace-ignorant' located by 'By.xpath: //div[@id="container"]/div/svg' not found
XPath
должен быть с учетом пространства имен.
Узел svg с Namespace-uri http://www.w3.org/2000/svg может быть выбран следующим XPath
:
//div[@id="container"]/div/*[namespace-uri() = "http://www.w3.org/2000/svg" and local-name()="svg"]
Однако целевой документ имеет только один узелс именем "svg", так что вы можете ослабить предикат, опуская условие namespace-uri () = "...".Также работает следующее выражение XPath
:
//div[@id="container"]/div/*[local-name()="svg"]
Наконец, вы можете выбрать текстовый узел SVG
следующим выражением XPath
:
//div[@id="container"]/div/*[local-name()="svg"]/*[local-name()="text" and @class="highcharts-title"]
Пожалуйста, посмотрите,это помогает.