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

C# webdriver屏幕截图中未显示鼠标交互,c#,selenium,webdriver,screenshot,mouseover,C#,Selenium,Webdriver,Screenshot,Mouseover,我目前正在使用SeleniumWebDriver 2.35,在截图时遇到了障碍。我编写了一个小函数,它接收一个IWebElement并返回特定元素的屏幕截图。我试图截图的元素实际上是从精灵中提取的图像。但这个元素很棘手,因为鼠标悬停/悬停时,图像会从灰色变为真实颜色(通过移动到sprite的不同部分)。我可以通过此功能获得图像的正确屏幕截图,但无法使其识别与iTakeScreenshot的鼠标交互。我可以在浏览器中直观地看到图像悬停在上面,但屏幕截图不能。有什么想法吗 public st

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

    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;
    }

根据我的经验,通过Selenium网格的自动布线,没有看到鼠标。这可能是因为“鼠标”实际上是一个虚拟的Selenium鼠标,与系统的本机鼠标驱动程序没有连接。

似乎最新的Selenium(2.39)解决了这个问题,我可以在这个屏幕截图方法中看到鼠标悬停。谢谢大家的帮助

在拍摄截图之前,你试过短暂的睡眠吗?可能是您的代码在浏览器有机会更新之前拍摄了屏幕截图。我刚刚尝试插入一个线程。MoveToElement之后和截图拍摄之前,我都没有注意到任何差异。我会尝试超过500次,但老实说,在这一点上,它将开始加倍的测试时间。我不是想看到鼠标指针,我只是想在截图时在图像上出现鼠标悬停效果,这不会发生。