请帮助解决此问题。我有使用devexpress编写的图表。
http://image.ibb.co/hRD5oR/chart.png
我对Selenium进行了这样的测试。它打开一个包含图表的页面并单击所有元素(最小化/最大化,展开/折叠)。这是代码:
driver.findElement(By.xpath("/html/body/form/div[3]/div[2]/div[1]/div[2]/div/svg/g[8]/g/g/rect[1]")).click();
此步骤的测试失败:
public void inputGrades()
{
Scanner input = new Scanner(System.in);
int grade;
System.out.printf("%s\n%s\n %s\n %s\n",
"Enter the integer grades in the range 0-100.",
"Type the end-of-file indicator to terminate input:",
"On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
"On Windows type <ctrl> z then press Enter");
while( input.hasNext())
{
grade = input.nextInt();
total += grade;
++gradeCounter;
incrementLetterGradeCounter(grade);
}
}
Selenium找不到这个酒吧。我想svg有一些细微差别。 请告知如何解决它。
答案 0 :(得分:0)
我将回答你的问题,但有多种解决方案。 现在,如果你总是有5个小节,你的问题很容易解决。
如果是5个小节,整个页面上总是5个小节:
这将返回5个元素:
driver.FindElement(By.XPath("//g[@class='dxc-markers']/rect");
可以肯定的是,在Chrome中点击F12,点击Console,例如:$ x(&#34; // g [@class =&#39; dxc-markers&#39;] / rect&#34;)< / p>
现在,如果您要获得5个元素,请使用:
driver.FindElement(By.XPath("(//g[@class='dxc-markers']/rect)[1]");
driver.FindElement(By.XPath("(//g[@class='dxc-markers']/rect)[2]");
driver.FindElement(By.XPath("(//g[@class='dxc-markers']/rect)[3]");
driver.FindElement(By.XPath("(//g[@class='dxc-markers']/rect)[4]");
driver.FindElement(By.XPath("(//g[@class='dxc-markers']/rect)[5]");
现在,如果条形图的数量是可变的,则需要创建一个元素数组。一旦你有了数组,而不是[1]在那里插入数组值,你就被设置了。