如何在Selenium MOBILE Webdriver中获取特定元素的屏幕截图?

问题描述

我正在尝试获取特定的Web元素屏幕截图,但是当Chromedriver中的“移动”模式处于打开状态时,此方法将失败。否则,可以在桌面模式下完美运行。

移动元素屏幕截图放大并且位置错误(屏幕截图是从第一个像素而不是从指定位置element.Position(不是0,0)裁剪的

        {
            IWebElement element = driver.FindElement(By.XPath(elementSelector));
            
            var byteArray = ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
            var screenshot = new Bitmap(new MemoryStream(byteArray));

            
            var croppedImage = new Rectangle(element.Location,element.Size);
            screenshot = screenshot.Clone(croppedImage,screenshot.PixelFormat);

            return screenshot;
        }

有人对如何解决这个问题有任何想法吗?

解决方法

所以答案是找到移动设备的像素比率,并乘以Rectangle()参数

How to calculate device pixel ratio