Есть ли способ получить локатор (склокатор или xpath и т. д.) Элементов в графике SmartGWT hightchart? Мне нужно автоматизировать действие щелчка по легенде серии на графике (серии, которые появляются в правой части графика).
Вот то, что я пытался идентифицировать локаторы валидации для элементов этого графа:
Любая помощь будет принята с благодарностью.
Заранее спасибо!
<g class = "highcharts-legend" zIndex = "7" transform = "translate(-32,110)">
<g zIndex = "1" clip-path = "url(#highcharts-2)">
<g transform = "translate(0,1)">
<g class = "highcharts-legend-item" zIndex = "1" transform = "translate(8,3)">
<path fill = "none" d = "M 0 11 L 16 11" stroke-dasharray = "none" stroke = "#C00000" stroke-width = "2"></path>
<path fill = "#C00000" d = "M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
<text x = "21" y = "15" style = "font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#274b6d;fill:#274b6d;" text-anchor = "start" zIndex = "2">
<tspan x = "21">Worst Inventory On Site</tspan>
</text>
</g>
<g class = "highcharts-legend-item" zIndex = "1" transform = "translate(8,21)">
<path fill = "none" d = "M 0 11 L 16 11" stroke-dasharray = "none" stroke = "#3A5723" stroke-width = "2"></path>
<path fill = "#3A5723" d = "M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
<text x = "21" y = "15" style = "font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#274b6d;fill:#274b6d;" text-anchor = "start" zIndex = "2">
<tspan x = "21">Total Ins</tspan>
</text>
</g>
<g class = "highcharts-legend-item" zIndex = "1" transform = "translate(8,39)">
<path fill = "none" d = "M 0 11 L 16 11" stroke-dasharray = "none" stroke = "#CCC" stroke-width = "2"></path>
<path fill = "#CCC" d = "M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
<text x = "21" y = "15" style = "font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#CCC;fill:#CCC;" text-anchor = "start" zIndex = "2">
<tspan x = "21">Total Outs</tspan>
</text>
</g>
<g class = "highcharts-legend-item" zIndex = "1" transform = "translate(8,57)">
<path fill = "none" d = "M 0 11 L 16 11" stroke-dasharray = "2,2" stroke = "#CCC" stroke-width = "2"></path>
<path fill = "#CCC" d = "M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
<text x = "21" y = "15" style = "font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#CCC;fill:#CCC;" text-anchor = "start" zIndex = "2">
<tspan x = "21">Inventory On Site</tspan>
</text>
</g>
<g class = "highcharts-legend-item" zIndex = "1" transform = "translate(8,75)">
<path fill = "none" d = "M 0 11 L 16 11" stroke-dasharray = "6,2" stroke = "#CCC" stroke-width = "2"></path>
<path fill = "#CCC" d = "M 8 9 C 10.664 9 10.664 13 8 13 C 5.336 13 5.336 9 8 9 Z"></path>
<text x = "21" y = "15" style = "font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;font-size:12px;cursor:pointer;color:#CCC;fill:#CCC;" text-anchor = "start" zIndex = "2">
<tspan x = "21">Inventory On Transit</tspan>
</text>
</g>
</g>
</g>
</g>Как мы узнаем, какой HTML предназначен для графиков, и ряды, которые идут после графиков. проявите некоторое усилие, задавая вопрос.
Спасибо вам всем. Под ответом @ dangi13 я опубликовал полученное решение.




Вы можете использовать приведенный ниже код для нажатия на HighChart Elements:
/**
* @param graphName Use one of below values.
* Worst Inventory On Site
* Total Ins
* Total Outs
* Inventory On Site
* Inventory On Transit
*/
public void clickOnGraph(String graphName) {
WebElement graphElement = driver.findElement(By.xpath("//g[@class='highcharts-legend-item']//tspan[text()='" + graphName + "']"));
graphElement.click();
}
Для дальнейших манипуляций с элементом HighChart. Вы можете сослаться на:
Это очень полезно для операций с Selenium, связанных с HighCharts.
Если обычный щелчок не работает, вы можете попробовать щелкнуть с помощью JavaScriptExecutor или класса Actions.
Пожалуйста, дайте мне знать, если это вам поможет :)
Я попробовал ваше решение и показываю следующую ошибку
Спасибо @ dangi13 за вашу помощь. Однако я нашел решение с использованием другой структуры xpath: sharedData.appInstance.findElement (By.xpath ("// [name () = 'g' and @ class = 'highcharts-legend'] // [name () = ' text '] // * [name () =' tspa n 'and text () =' Худший инвентарь на сайте '] ")). click ();` `
Спасибо @ dangi13 за вашу помощь. Однако я нашел решение, используя другую структуру xpath:
sharedData.appInstance.findElement(By.xpath("//[name()='g' and @class='highcharts-legend']//[name()='text']//*[name()='tspan' and text()='Worst Inventory on Site']")).click();
Пожалуйста, разместите код в виде текста, а не изображения.