Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用xctest从照片/图库中拾取图像_Ios_Swift_Gallery_Xctest - Fatal编程技术网

Ios 使用xctest从照片/图库中拾取图像

Ios 使用xctest从照片/图库中拾取图像,ios,swift,gallery,xctest,Ios,Swift,Gallery,Xctest,我正在为一个ios应用程序编写一个测试框架,该应用程序需要从照片/图库应用程序导入图像进行验证。我正在使用XCTest框架进行测试。我在互联网上查找了一些资源,但没有找到。谁能帮我解决这个问题吗。同样,我不是从应用程序内部而是从图片库中选择图片 您不能使用XTest与您自己的应用程序之外的应用程序进行交互。这些测试引用了你的应用程序包标识符,这是他们能够与之交互的唯一应用程序 XTest需要对应用程序的内部进行一定程度的访问,以便向您提供有关应用程序的信息,从而允许您通过XTest与应用程序进行

我正在为一个ios应用程序编写一个测试框架,该应用程序需要从照片/图库应用程序导入图像进行验证。我正在使用XCTest框架进行测试。我在互联网上查找了一些资源,但没有找到。谁能帮我解决这个问题吗。同样,我不是从应用程序内部而是从图片库中选择图片

您不能使用XTest与您自己的应用程序之外的应用程序进行交互。这些测试引用了你的应用程序包标识符,这是他们能够与之交互的唯一应用程序

XTest需要对应用程序的内部进行一定程度的访问,以便向您提供有关应用程序的信息,从而允许您通过XTest与应用程序进行交互,而这不是您自己制作的应用程序中可以访问的内容。

是 您可以访问照片库,但它需要XUITest,而且录音机在苹果的UIRemoteView中无法像照片采集器那样工作。您所要做的是访问XUITest中的photo picker,设置断点,然后检查视图层次结构以查找能够使用XUITest导航的元素。下面的示例适用于模拟器附带的图片

    let app = XCUIApplication()
    // get to the photo library
    // set a breakpoint, po [[UIWindow keyWindow] recursiveDescription]
    let tablesQuery = app.tables
    app.sheets.buttons["Choose From Library"].tap()
    app.cells["Camera Roll"].tap()
    app.cells["Photo, Landscape, March 12, 2011, 7:17 PM"].tap()

XCTest为这种情况提供了特殊的方法

        let galleryAccessMonitor = addUIInterruptionMonitor(withDescription: "Intercept Gallery Access") { alert -> Bool in
            alert.buttons.element(boundBy: 1).tap() /// tap accept
            return true /// mark as handled
        }

请看

是否有任何方法可以做到这一点。。。还有其他替代方法吗?你能帮我吗?我知道有像EggPlant这样的工具可以让你与整个设备进行交互,但老实说,我不推荐使用它,因为它是一种非常古怪的测试方法。我的建议是结合XTest对应用内场景手动测试照片场景。因此,我无法使用XTest访问Gallery。我们可以使用XTest访问设备上的任何文件夹吗?我可以在其中转储图像并用于测试?您可以访问的文件系统的唯一部分是应用程序中的内容,因此在应用程序正在测试时,您需要在应用程序包中包含任何测试图像。照片的单元格标签实际上是根据时区进行调整的,这意味着它在不同的时区之间不是常数。如果您只想拾取照片卷中的任何照片,可以改用谓词:
app.cells.containing(NSPredicate(格式:“label BEGINSWITH'photo')).element(boundBy:0)。点击()
在哪里设置“PhotosGridView”?但在哪里?在UIImagePickerController上,我找不到accessibilityIdentifier属性。我相信您想要实现的不是此线程的范围。要测试从Apple Photos应用程序中挑选照片(这是本文的目标),您不需要使用任何UIKit对象。
let photosApp = XCUIApplication(bundleIdentifier: "com.apple.mobileslideshow")
photosApp.launch()

let continueButton = photosApp.buttons["Continue"]
if continueButton.waitForExistence(timeout: 2) {
  continueButton.tap()
}
photosApp.collectionViews["PhotosGridView"].cells.firstMatch.tap()