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

时间:2018-10-09 09:43:03

标签: testing appium ui-automation appium-ios

我正在使用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与他们互动的方法。有没有办法使这项工作按预期进行?

1 个答案:

答案 0 :(得分:1)

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

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

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