iOS 应用的屏幕截图与元素的坐标和大小不匹配

Screenshot doesn't match coordinates and size of element for iOS app

我正在使用 Appium 方法截取屏幕截图并根据元素的坐标和大小裁剪该屏幕截图的特定部分。

我这样做的方式:

截图

这是用getScreenShotAs()方法完成的


裁剪掉该图像的一部分

完成

        image.getSubimage(getElementCoordinateX(element),
                          getElementCoordinateY(element),
                          getElementWidth(element),getElementHeight(element));

        public static int getElementWidth(MobileElement element) {
            return element.getSize().getWidth();
        }
        public static int getElementHeight(MobileElement element) {
            return element.getSize().getHeight();
        }
        public static int getElementCoordinateX(MobileElement element) {
            return element.getLocation().getX();
        }
        public static int getElementCoordinateY(MobileElement element) {
            return element.getLocation().getY();
        }

我在 Android 上测试了这种方法,它按预期工作,但在 iOS 上,它截取了屏幕截图中完全不同的部分,我确信它是被定位的正确元素.

开发人员告诉我,iOS 应用程序与框架一起工作,我可能得到的是边界坐标,而不是框架的坐标。我没有找到使用 Appium 与他们交互的方法。有没有办法让这项工作按预期进行?

您可以直接使用以下方式获取元素的屏幕截图: Ruby:

element = driver.find_element(:predicate, "type == 'XCUIElementTypeSlider'")
screenshot = driver.element_screenshot_as(element ,:base64)

这应该会自动正确地裁剪屏幕截图...