Selenium 如何从canvas元素管理的条形图、饼图等中获取文本或值?

Selenium 如何从canvas元素管理的条形图、饼图等中获取文本或值?,selenium,protractor,automated-tests,robotframework,ui-automation,Selenium,Protractor,Automated Tests,Robotframework,Ui Automation,我正在尝试从这张图片中的条形图中获取文本。它没有任何元素,因此我无法获取文本。它只显示在dom树中 检查完画布后,我只能看到画布元素,没有其他子元素,因此我可以从图形中获取文本 谁能帮助我如何从这个条形图的条形图中获取值 我正在尝试的网站链接位于下方我认为您可以使用容器类中的图像和文本逻辑。这样,您的图像可以显示在您的文本前面,而不会出现任何溢出。我想这应该适用于画布。您可以检查此链接:条形图的数据在javascript: <script> //Basic example

我正在尝试从这张图片中的条形图中获取文本。它没有任何元素,因此我无法获取文本。它只显示在dom树中

检查完画布后,我只能看到画布元素,没有其他子元素,因此我可以从图形中获取文本

谁能帮助我如何从这个条形图的条形图中获取值


我正在尝试的网站链接位于下方

我认为您可以使用容器类中的图像和文本逻辑。这样,您的图像可以显示在您的文本前面,而不会出现任何溢出。我想这应该适用于画布。您可以检查此链接:

条形图的数据在javascript:

<script>
  //Basic example
  var ctxB = document.getElementById("myChart").getContext('2d');
  var myBarChart = new Chart(ctxB, {
    type: 'bar',
    data: {
      labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
      datasets: [{
        label: '% of Votes',
        data: [12, 19, 3, 5, 2, 3],
        backgroundColor: [
          'rgba(255, 99, 132, 0.2)',
          'rgba(54, 162, 235, 0.2)',
          'rgba(255, 206, 86, 0.2)',
          'rgba(75, 192, 192, 0.2)',
          'rgba(153, 102, 255, 0.2)',
          'rgba(255, 159, 64, 0.2)'
        ],
        borderColor: [
          'rgba(255,99,132,1)',
          'rgba(54, 162, 235, 1)',
          'rgba(255, 206, 86, 1)',
          'rgba(75, 192, 192, 1)',
          'rgba(153, 102, 255, 1)',
          'rgba(255, 159, 64, 1)'
        ],
        borderWidth: 1
      }]
    },
    optionss: {
      scales: {
        yAxes: [{
          ticks: {
            beginAtZero: true
          }
        }]
      }
    }
  });

//基本示例
var ctxB=document.getElementById(“myChart”).getContext(“2d”);
var myBarChart=新图表(ctxB{
类型:'bar',
数据:{
标签:[“红色”、“蓝色”、“黄色”、“绿色”、“紫色”、“橙色”],
数据集:[{
标签:“%的选票”,
数据:[12,19,3,5,2,3],
背景颜色:[
"rgba(255,99,132,0.2)",,
“rgba(54162235,0.2)”,
"rgba(255,206,86,0.2)",,
“rgba(751921920.2)”,
“rgba(153102255,0.2)”,
‘rgba(255、159、64、0.2)’
],
边框颜色:[
"rgba(255,99132,1)",,
“rgba(54162235,1)”,
"rgba(255,206,86,1)",,
"rgba(751921921)",,
"rgba(153102255,1)",,
‘rgba(255、159、64、1)’
],
边框宽度:1
}]
},
选项:{
比例:{
雅克斯:[{
滴答声:{
贝吉纳泽罗:是的
}
}]
}
}
});
有关如何提取javascript变量,请参见以下内容:

因此tooltip是一个单独的元素,因此需要获取tooltip元素的一些属性。看看开发工具

但如果您想从实际画布中提取值,并且如果您有生成此图表的代码,则需要针对该元素编写代码,如下所示:

let programNames = await this.$barsSection.evaluate("programs"),
    programsData = await this.$barsSection.evaluate("data");

您可能需要与开发人员联系以了解您要查找的属性名称

dev tools中没有工具提示元素。这里的问题是文本被渲染(绘制)为rastor格式并显示为单个图像(svg?)。拍摄可以手动查看的屏幕截图可能是您唯一的选择。(从浏览器端…)现在我看,它是一个标准位图(所以它是rastor而不是vector):您需要在myBarChart中捕获值。但是,由于tooptip是一个渲染的标准位图,因此在鼠标悬停时还需要进行图像比较。这是没有效率的。我读了那个链接。主要是omn ruby。您能帮助我如何从这个javasrcipt读取值吗。对于exmaple:我想打印“标签”和“第一个数据”