【问题标题】:Mouse interactions not showing in webdriver screenshotswebdriver屏幕截图中未显示鼠标交互
【发布时间】:2013-09-18 09:40:02
【问题描述】:

我目前正在使用 Selenium WebDriver 2.35,但在截屏时遇到了障碍。我编写了一个小函数,它接受一个 IWebElement 并返回特定元素的屏幕截图。我要截屏的元素实际上是从精灵中提取的图像。但是这个元素很棘手,因为在鼠标悬停/悬停时,图像会从灰色变为其真实颜色(通过移动到精灵的不同部分)。我可以通过此功能获得图像的正确屏幕截图,但无法识别鼠标与 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;
    }

【问题讨论】:

  • 你在截图之前尝试过短暂的睡眠吗?可能是您的代码在浏览器有机会更新之前截取屏幕截图。
  • 我只是尝试在 MoveToElement 之后和截屏之前插入一个 Thread.Sleep(500),但我没有发现任何区别。我会尝试超过 500 次,但老实说,到那时它会开始将测试时间加倍

标签: c# selenium webdriver screenshot mouseover


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不是想让鼠标指针被看到,我只是想让鼠标在截图时出现在图像上,这不会发生。
    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2010-12-10
    相关资源
    最近更新 更多