【问题标题】:Screenshot doesn't match coordinates and size of element for iOS app屏幕截图与 iOS 应用程序元素的坐标和大小不匹配
【发布时间】:2019-03-14 01:10:46
【问题描述】:

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

【问题讨论】:

    标签: testing appium ui-automation appium-ios


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,在 Java 中也可以这样做。我昨天想通了,想写在这里。操作屏幕截图的所有其他方法都是矫枉过正的。感谢 Cepin 的贡献。这可以在 Java/Appium 中完成的方式:driver.findElement(By.id("id")).getScreenshotAs(OutputType.FILE);
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多