2012-09-17 18 views
1

Hej GuysSVG和硒

我使用谷歌可视化API来绘制堆积的条形图。它的一切都很好,但现在我想用硒来测试它,但很难在google图表中查找元素。

例如,我想单击图表元素,但每次我试图找到与XPath的元素,我得到异常“OpenQA.Selenium.NoSuchElementException:元素找不到”

我阅读了硒它很难点击svg图像。

有没有人知道一个解决方案因为我是一种鄙视,我还没有找到一个合适的解决方案在网上我自己。

我的表是这样的:

http://i48.tinypic.com/21o4swx.png

我试图待办事项是:

 webdriver.Navigate().GoToUrl("http://localhost:59777/Tests/TestsMainView"); 
     IWebElement element = webdriver.FindElement(By.XPath("/html/body/div/div[2]/div[2]/iframe/html/body/div/svg/g[2]/g/g[2]/rect[5]")); 
     Actions myAction = new Actions(webdriver); 
     myAction.Click(element).Perform(); 
     Thread.Sleep(9999); 

谢谢:)

回答

0

这里有一些建议,可以帮助您。首先你的代码,第二行是应

WebElement element = webdriver.FindElement(By.xpath("//img[contains(@src,'http://i48.tinypic.com/21o4swx.png')]")) 

你有“IWebElement”(这可能只是你的问题中一个错字)。我改变了找到匹配元素的方式,而不是从顶层开始并继续工作。这是一种更好的做法,可以缩小您尝试与之交互的元素,以便对代码所做的更改不会立即破坏您的测试。另外,除非用“//”或“xpath =”selenium启动xpath表达式,否则Webdriver将无法识别它,即使您的路径从未更改硒Webdriver也无法找到它。

如果我明白你正在尝试做的,那么你还可以去除3-5行并用以下替换它们,

element.click(); 

这将有硒的webdriver放大通过您的链接提供的图表。我希望这可以帮助

0

我注意到xpath无法在svg标签中选择任何东西。我设法找到使用className或tagName选择器的元素,或者你甚至可以尝试cssSelectors,但我不确定那个。请注意,您仍然可以使用xpath访问svg中的节点的父节点:

 By.xpath(".."); 

希望这会有所帮助。