Как взять значения из линейного графика, построенного с использованием углового JS от selenium webdriver C#?

У меня есть график, который построен с использованием угловых j. Это то, что я получаю, когда я проверяю элемент графика.

<canvas 
ng-reflect-datasets="[object Object]" 
ng-reflect-labels="blahblah" 
ng-reflect-options="[object Object]" 
ng-reflect-chart-type="line" 
ng-reflect-colors="[object Object]"  
ng-reflect-legend="true">
</canvas>

Линии на графике имеют соответствующие всплывающие подсказки с данными. Может кто-нибудь, пожалуйста, сообщите мне, как получить значения / значения всплывающей подсказки?

2 ответа

Решение

Тег CANVAS подобен апплету на странице и не содержит HTML для того, что отображается внутри него, поэтому с ним нельзя нормально взаимодействовать. Вы можете делать такие вещи, как перемещать курсор, нажимать и парить, используя .MoveToElement(element, offsetX, offsetY) но это не детерминировано. Если содержимое изменится, у вас не будет никакой идеи, потому что все это основано на местоположении, а не на элементах. Лучше всего поговорить с разработчиками, если у вас есть к ним доступ, и попросить их построить вам API, который вы можете использовать для доступа к внутренним компонентам CANVAS и проведения своего тестирования таким образом.

в java я использую это, если вы используете ChartJS:

String javaScript ="var puntos=Chart.instances[0].data.datasets[0].data; return puntos";
String dato=((JavascriptExecutor)DriverContext.getDriver()).executeScript(javaScript).toString();

возвращает строку всех данных на диаграмме (массив).

Я только начал использовать ngWebDriver для Java, и я знаю, что вы можете использовать Protractor.NET в C#.

Вы можете получить элементы, которые вы упомянули ng-*, используя локатор "ByAngular" ngWebDriver.

Например, вот как это выглядит для элемента вроде:

<select ng-model="operator" class="bla bla"/>

driver.findElement(ByAngular.model("operator"))
Другие вопросы по тегам