Как взять значения из линейного графика, построенного с использованием углового 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"))