这是我使用Selenium IDE的第一天,我的网络知识很少,所以请耐心等待。 我的团队正在开发一个网站,我需要为它编写测试。该网站正在做的是它将显示我们收集的一些数据的几个图表。我将在每个图表中搜索特定字词,以确定图表是否正确显示,并提醒哪些图表未正确显示。
所以我的问题是我不知道如何访问每个"图表对象"个别。我可以表演:
verifyTextPresent, target =, value = Good value
并且该命令将起作用(在Selenium IDE中为绿色),只要6个图表中的一个正确显示并具有"良好的值"在里面。我认为它正在搜索整个网页,这就是它运作的原因。如果我想单独测试每个图表,那么我就有问题了。
我尝试过的事情:
1) 我试图右键单击图表对象,Selenium IDE表示目标名为
css = svg> RECT
然而,它一直在失败。日志说
[error] Element css=svg > rect not found
2)我去http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#locating-elements看看他们有什么提示。不幸的是,这些例子并不完全符合我们所做的事情,因此我随机尝试了一些事情,这些事情也没有用(我的坏事)。我会在下面发布源代码html,因此它更有意义,但这些是我尝试过的一些内容:
id=numRecs
identifier=charts-6
css=class#charts-container//chart-6
我进行了搜索,上面的值是独一无二的,所以在解析时不应该有任何混淆。
这是Chrome中图表对象的部分来源。如果需要我可以发布更多但我认为这些是关键线,因为当我将鼠标滚过这两个div对象时,图表会在Chrome中突出显示:
<body>
blah blah
<div id="numRecs" data-chart="3">
<div class="charts-container" id="charts-6" style="position: relative; overflow: hidden; width: 1267px; height: 300px; text-align: left; line-height: normal; z-index: 0; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); font-family: 'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif; font-size: 12px;">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1267" height="300">
blah blah
<div id="another chart" data-chart="4">
blah blah
</div>
<div id="misc chart" data-chart="5">
blah blah
</div>
</body>
希望有人可以指出我正确的方向。在此先感谢您的帮助。
答案 0 :(得分:1)
您可以使用xpath或css查找元素。我在Java(Eclipse)中使用Selenium和JUnit,这里是一个用xpath查找元素的示例代码:
@Test
public void test1() throws Exception {
WebDriver driver = new FireFoxDriver();
String url = "example.html";
driver.get(url);
Thread.sleep(5000);
WebElement anotherChart = driver.findElement(By.id("another chart")); // find element by id
String anotherChartText = anotherChart.getText(); // Use getText to check data ("blah blah")
WebElement miscChart = driver.findElement(By.cssSelector("#another chart")); // find element with css
String attribute = miscChart.getAttribute("data-chart"); // Get the specified attribute of the WebElement ("5")
WebElement chart6 = driver.findElement(By.xpath("//div[@id='charts-6']")); // find element with xpath
WebElement numRec = driver.findElement(By.xpath("//div[@id='numRecs']")); // find element with xpath
WebElement numRecChart6 = numRec.findElement(By.xpath("div[@id='charts-6']")); // You can use WeElement.findElement() method to find an object in the WebElement
driver.close();
}
我认为xpath和css对你有帮助。要检查代码,可以使用xpath测试人员:http://www.freeformatter.com/xpath-tester.html#ad-output