如何使用Selenium,Java自动化图形

问题描述 投票:0回答:3

我将数据注入Web应用程序,并生成图形和饼图。我想通过Selenium测试图表上的结果是否与给定数据一致。有任何想法吗?谢谢,最好的问候!!!

java selenium selenium-webdriver
3个回答
0
投票

假设您的图形具有Javascript模型(例如数组),则可以使用assertEval命令断言此类数组的内容。


0
投票

我发布了你的饼图问题最基本但最基本的例子,我在这里以雅虎基于YUI的PIE图表为例。在每次刷新时,所有部分都是动态创建的,所以我在元素的id中使用contains。在图表中,控件不是简单的HTML,但这些是svg(HTML5控件),所以在找到这些时我们需要在xpath中使用// *。

我的动机是在PIE图表中找到这些动态部分(在当前图表中有5个部分)

并单击每个部分并打印这些部分的工具提示文本。

Out put就像。 Violette部分:日:周一税:2000

灰色部分:日:星期五税:2000

Light Violette Part:day:周四税:200

绿色部分:日:周三税:4000

布朗部分:日:周二税:50 0.61%

这是它的演示程序,你可以在任何地方执行它...... :)

 package tests;

 import java.util.concurrent.TimeUnit;
 import org.openqa.selenium.By; 
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.firefox.FirefoxDriver;


 public class testCode {
 public static WebDriver driver;

 public static void main(String[] args) throws InterruptedException {

 driver = new FirefoxDriver();
 driver.get("http://yuilibrary.com/yui/docs/charts/charts-pie.html");

 driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

 **//FIND DIFFERENT SECTIONS IN PIE CHART**

 WebElement ViolettePart = driver.findElement(By.xpath("//*   [contains(@id,'yui_3_13_0_1_')][contains(@class,'yui3-svgSvgPieSlice')][@fill='#66007f']"));
 WebElement GreenPart = driver.findElement(By.xpath("//*[contains(@id,'yui_3_13_0_1_')][contains(@class,'yui3-svgSvgPieSlice')][@fill='#295454']"));
 WebElement GreyPart = driver.findElement(By.xpath("//*[contains(@id,'yui_3_13_0_1_')][contains(@class,'yui3-svgSvgPieSlice')][@fill='#e8cdb7']"));
 WebElement LightViolettePart = driver.findElement(By.xpath("//*[contains(@id,'yui_3_13_0_1_')][contains(@class,'yui3-svgSvgPieSlice')][@fill='#996ab2']"));
 WebElement BrownPart = driver.findElement(By.xpath("//*[contains(@id,'yui_3_13_0_1_')][contains(@class,'yui3-svgSvgPieSlice')][@fill='#a86f41']"));

 **//TOOLTIP OVER PIE CHART**

 WebElement ToolTip = driver.findElement(By.xpath("//div[contains(@id,'_tooltip')]"));

 **//CLICK EACH SECTION OF PIE CHART AND GET THE TEXT OVER IT**

 ViolettePart.click();
 System.out.println("Violette Part:"+ToolTip.getText());
 GreyPart.click();
 System.out.println("Grey Part:"+ToolTip.getText());
 LightViolettePart.click();
 System.out.println("Light Violete Part:"+ToolTip.getText());
 GreenPart.click();
 System.out.println("Green Part:"+ToolTip.getText());
 BrownPart.click();
 System.out.println("Brown Part:"+ToolTip.getText());
 } }

0
投票

除非你只是验证关于图表的元数据(标题,一些JSON属性等),否则你将不得不使用图像比较。您可以定义一个基线图像,该图像表示结果应该是什么样的,并且您的测试与参考进行比较。

由于可靠地测试图像并非易事,因此您可以使用Ocular等库。

© www.soinside.com 2019 - 2024. All rights reserved.