如何从 selenium webdriver c# 使用 angular JS 构建的折线图中获取值?

How to take values from a line graph built using angular JS by selenium webdriver c#?

我有一个使用 angular 构建的图表 js.This 是我检查图表元素时得到的结果。

<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>

图中的线条有适当的工具提示和数据。 有人可以指导我如何获取值/工具提示值吗?

CANVAS 标签就像页面中的小程序,不包含其中显示的 HTML,因此无法正常交互。您可以使用 .MoveToElement(element, offsetX, offsetY) 移动光标、单击和悬停等操作,但这不是确定性的。如果内容发生变化,您将一无所知,因为它都是基于位置而不是基于元素的。最好的办法是与开发人员交谈,如果您可以访问他们,让他们为您构建一个 API,您可以使用它来访问 CANVAS 的内部结构并以这种方式进行测试.

我刚开始为 Java 使用 ngWebDriver,我知道您可以在 C# 中使用 Protractor.NET。

您可以使用 ngWebDriver "ByAngular" 定位器获取您提到的 ng-* 元素。

例如,这是这样一个元素的样子:

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

driver.findElement(ByAngular.model("operator"))

在 java 中,如果你使用 ChartJS,我会使用它:

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

returns图表中所有数据的字符串(数组)。