如何在XCUITest中进行“页面”对象设计

时间:2018-08-23 03:46:01

标签: swift automation xcuitest xcode9.4

我是XCUITest的新手。我想对如何设计“页面”(实际上更像屏幕)对象XCUITest提出一些建议。

是否有任何开源项目可以提供示例参考?

我正在考虑创建一个屏幕文件夹,以将所有屏幕对象放在那里,以容纳每个屏幕的方法和定位器。创建一个测试文件夹以放置实际的测试用例。并创建一个lib文件夹以将常用方法放在此处。

我在想两件事:1. XCUITest如何引用不同文件夹中的文件,如何从两个不同的屏幕文件导入一个测试文件的方法? 2.我也正在考虑创建一个数据文件(类似于.json文件)。我应该将其设置为.swift文件吗?以及如何进行测试?

非常感谢!

1 个答案:

答案 0 :(得分:1)

  1. 您无需从位于同一目标中的不同文件夹中导入文件。它们可以直接使用而无需导入。
  2. 引用Reading in a JSON File Using Swift读取json文件。

用于页面对象设计

AppNameUITests / Screens / Screen1.swift

class Screen1 {
    var app: XCUIApplication

    init(app: XCUIApplication) {
        self.app = app
    }

    var element1: XCUIElement {
        return app.buttons.firstMatch
    }

    var element2: [XCUIElement] {
        return app.textFields.allElementsBoundByIndex
    }

    func method1() -> Int {
        element1.click()
        return element2.count
    }
}

AppNameUITests / Tests / TestSuite1.swift

class TestSuite1: XCTestCase {

    override func setUp() {
        // launch application and pre-conditions for the test case
    }

    override func tearDown() {
        // clean up steps and terminate the application
    }

    func testMethod1() {
        let app = XCUIApplication()
        let screen1Obj = Screen1(app: app)

        XCTAssertTrue(screen1Obj.method1() == 5, "Test failed.")
    }
}