【问题标题】:SVG and seleniumSVG 和硒
【发布时间】:2012-09-17 10:43:17
【问题描述】:

小伙伴们

我使用谷歌可视化 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);

谢谢:)

【问题讨论】:

    标签: selenium charts testautomationfx


    【解决方案1】:

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

    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 放大您的链接提供的图表。我希望这会有所帮助

    【讨论】:

      【解决方案2】:

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

           By.xpath("..");
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-10
        • 2011-11-26
        • 1970-01-01
        • 1970-01-01
        • 2015-09-27
        相关资源
        最近更新 更多