鼠标交互未显示在webdriver屏幕截图中

时间:2013-09-13 16:08:59

标签: c# selenium webdriver screenshot mouseover

我目前正在使用Selenium WebDriver 2.35,并且在拍摄屏幕截图时遇到了障碍。我写了一个小函数,它接受一个I​​WebElement并返回特定元素的屏幕截图。我试图截图的元素实际上是从精灵中提取的图像。但是这个元素很棘手,因为鼠标悬停/悬停时图像会从灰色变为真实颜色(通过移动到精灵的不同部分)。我可以通过此功能获得图像的正确截图,但无法识别鼠标与ITakesScreenshot的交互。我可以在浏览器中直观地看到图像悬停在上面,但屏幕截图不能。有什么想法吗?

    public static Bitmap GetImage(IWebElement element)
    {
        RemoteWebDriver driver = BrowserManager.GetInstance().GetDriver();
        Actions action = new Actions(driver);

        //take screenshot of page
        action.MoveToElement(element).Build().Perform();
        Byte[] ba= ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
        Bitmap ss = new Bitmap(new MemoryStream(ba)); 
        //ss.Save("c:\\tmp\\ss.png", ImageFormat.Png);

        Rectangle crop = new Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);

        //create a new image by cropping the original screenshot
        Bitmap image = ss.Clone(crop, ss.PixelFormat);
        return image;
    }

2 个答案:

答案 0 :(得分:0)

根据我的经验,通过Selenium Grid路由的自动化,没有看到鼠标。也许这是因为“鼠标”实际上是一个虚拟的Selenium鼠标,并且未连接到系统本机鼠标驱动程序。

答案 1 :(得分:0)

似乎最新的硒(2.39)已经解决了这个问题,我能够看到鼠标悬停在这个截图方法中。谢谢大家的帮助!