如何使用Selenium、Java实现图形自动化

cidc1ykv  于 2022-12-21  发布在  Java
关注(0)|答案(4)|浏览(151)

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

yftpprvb

yftpprvb1#

假设你的图有一个Javascript模型(例如一个数组),你可以使用assertEval命令Assert这个数组的内容。

js81xvg6

js81xvg62#

我将为您的饼图问题发布最基本的示例,这里我以Yahoo的基于YUI的PIE图为例。在每次刷新中,所有部分都是动态创建的,因此我在元素的id中使用contains。在图表中,控件不是简单的HTML,而是svg(HTML5控件),因此在查找这些控件时,我们需要在xpath中使用//*。
我的目的是在PIE图中找到这些动态部分(在当前图中有5个部分)
单击每个部分并打印这些部分的工具提示文本。
输出将是这样的。紫罗兰部分:天:周一税:2000
灰色部分:天:周五税费:2000
浅紫罗兰色部分:天:周四税: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());
 } }
hgtggwj0

hgtggwj03#

除非你可以只验证图表的元数据(标题,一些JSON属性等),否则你必须使用图像比较。你定义一个基线图像来表示结果应该是什么样的,然后你的测试与参考进行比较。
由于可靠地测试图像并非易事,因此可以使用Ocular之类的库。

h7wcgrx3

h7wcgrx34#

如果它是一个条形图,那么你可以使用“findElements”来识别所有的条形图和标签,然后你可以在标签之间迭代,如果文本与你给出的输入相匹配,那么你可以使用Actions类在条形图上移动,然后你可以验证工具提示上的数据。
要从图形中获取任何xpath,您可以在xpath中使用 * 来代替标记名,例如
//*[@类别='ABC']
您可以按照相同的过程为饼图,但它将有一些修改

相关问题