1

Hej 伙计们

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

例如,我想单击图表元素,但每次尝试通过 xpath 查找元素时,都会出现异常“OpenQA.Selenium.NoSuchElementException:找不到元素”

我用 selenium 读到它很难点击 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);

谢谢 :)

4

2 回答 2

0

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

     By.xpath("..");

希望这会有所帮助。

于 2013-02-12T17:29:58.663 回答
0

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

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

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

如果我了解您要执行的操作,则还可以删除第 3-5 行并将其替换为以下内容,

element.click();

这将使 selenium Webdriver 放大链接提供的图表。我希望这有帮助

于 2012-12-17T17:15:19.607 回答