我将数据注入Web应用程序,它会生成图形和饼图。我想通过Selenium测试图表上的结果是否与给定数据一致。有任何想法吗?谢谢,最好的问候!!!
答案 0 :(得分:0)
假设您的图形具有Javascript模型(例如数组),您可以使用assertEval命令断言此类数组的内容。
答案 1 :(得分:0)
我发布了饼图问题最基本但最基本的例子, 在这里,我将以雅虎的YUI为基础的PIE图表作为我的例子。 在每次刷新时,所有部分都是动态创建的,所以我在元素的id中使用contains。在图表中,控件不是简单的HTML,但这些是svg(HTML5控件),所以在找到这些时我们需要在xpath中使用// *。
我的动机是在PIE图表中找到这些动态部分(在当前图表中有5个部分)
点击每个部分并打印这些部分的工具提示文字。
Out out就像。 Violette Part:day:Monday 税:2000
灰色部分:白天:星期五 税:2000
Light Violette Part:day:Thursday 税: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());
} }
答案 2 :(得分:0)
除非您只是验证有关图表的元数据(字幕,一些JSON属性等),否则您将不得不使用图像比较。您可以定义一个基线图像,该图像表示结果应该是什么样的,并且您的测试与参考进行比较。
由于可靠地测试图像并非易事,因此您可以使用Ocular等库。
答案 3 :(得分:0)
如果它是条形图,那么您可以使用“findElements”识别所有条形和标签,然后您可以在标签之间进行迭代,如果文本与您提供的输入匹配,则使用 Actions 类获取标签文本在该栏上移动,然后您可以验证工具提示上的数据。
要从图中获取任何 xpath,您可以在 xpath 中使用 * 代替标记名,例如
//*[@class='ABC']
您可以对饼图执行相同的过程,但需要稍作修改