我将数据注入Web应用程序,并生成图形和饼图。我想通过Selenium测试图表上的结果是否与给定数据一致。有任何想法吗?谢谢,最好的问候!!!
假设您的图形具有Javascript模型(例如数组),则可以使用assertEval命令断言此类数组的内容。
我发布了你的饼图问题最基本但最基本的例子,我在这里以雅虎基于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());
} }
除非你只是验证关于图表的元数据(标题,一些JSON属性等),否则你将不得不使用图像比较。您可以定义一个基线图像,该图像表示结果应该是什么样的,并且您的测试与参考进行比较。
由于可靠地测试图像并非易事,因此您可以使用Ocular等库。