如何在 XCUITest 中进行“页面”对象设计
Posted
技术标签:
【中文标题】如何在 XCUITest 中进行“页面”对象设计【英文标题】:How to do 'page' object design in XCUITest 【发布时间】:2018-08-23 03:46:01 【问题描述】:我是 XCUITest 的新手。我想就如何设计“页面”(实际上更像屏幕)对象 XCUITest 获得一些建议。
是否有任何提供示例供参考的开源项目?
我正在考虑创建一个屏幕文件夹以将所有屏幕对象放在那里以保存每个屏幕的方法和定位器。创建一个测试文件夹来放置实际的测试用例。并且还创建一个 lib 文件夹以将常用方法放在那里。
我想知道两件事:1. XCUITest 如何引用不同文件夹中的文件,一个测试文件如何从 2 个不同的屏幕文件导入方法? 2.我也在考虑创建一个数据文件(像.json文件一样)。我应该将其设置为 .swift 文件吗?以及如何让我的测试调用它?
非常感谢!
【问题讨论】:
【参考方案1】:-
您无需从位于同一目标的不同文件夹中导入文件。无需导入即可直接使用。
参考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.")
【讨论】:
以上是关于如何在 XCUITest 中进行“页面”对象设计的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XCUITest 中使用 perform(withKeyModifier:block:) 函数执行多选