iOS自动化探索介绍WebDriverAgent安装

iOS自动化探索介绍WebDriverAgent安装的详细介绍

WebDriverAgent是 Facebook 开源的一个驱动工具,可以用于 iOS 版本的 App 上进行自动化测试。它是通过 Xcode 和 XCTest 来实现 iOS 平台上的 UI 自动化测试。在使用 WebDriverAgent 之前,需要安装和配置一些必要的工具和环境。

安装和配置 Carthage

Carthage 是一个简单的依赖管理器,用于管理 iOS 上的第三方框架和库。在安装和使用 WebDriverAgent 之前,需要首先安装和配置 Carthage。

1. 安装 Carthage

Carthage 可以使用 Homebrew 来进行安装:

```

brew install carthage

```

也可以手动下载安装,安装包可以在 Carthage 的官方网站上下载:https://github.com/Carthage/Carthage/releases

2. 初始化 Cartfile

使用 Carthage 管理第三方框架,需要在 iOS 项目的根目录下创建 Cartfile 文件,并在文件中列出需要安装的框架和库。

使用编辑器打开终端,进入 iOS 项目的根目录,在终端中输入以下命令将创建 Cartfile 文件:

```

touch Cartfile

```

然后在 Cartfile 文件中添加以下行:

```

github "facebook/WebDriverAgent"

```

3. 使用 Carthage 安装 WebDriverAgent

在终端中定位到 iOS 项目的根目录下,并输入以下命令将依赖的工程文件下载到 aCarthage/Checkouts 目录中:

```

carthage update --platform iOS

```

4. 配置 WebDriverAgent

在 WebDriverAgent 项目的根目录下,打开 WebDriverAgent.xcodeproj 文件。

在 Xcode 中,将 "Signing" 菜单中的 "Team" 属性设置为您的开发者账号。

5. 构建 WebDriverAgent

在 Xcode 中,点击顶部菜单栏中的 "Product" -> "Build",或使用快捷键 Command + B 构建项目。构建完成后,您可以在打开的 Target 中选择 Test Navigator,在其中找到 WebDriverAgentRunner。

6. 启动 WebDriverAgent

在 Xcode 中,点击 "Product" -> "Scheme" -> "Edit Scheme",或使用快捷键 Command + <。

在弹出的窗口上,选择 "Run",然后单击左侧菜单的 "Arguments" 选项卡。

在 "Arguments Passed On Launch" 区域中,添加以下两个参数:

```

--use-json-logging=false

--simple-pipe=true

```

然后,点击 "Close",通过 "Command + R" 快捷键启动 WebDriverAgent。

7. 运行测试

构建并启动 WebDriverAgent 后,您可以在您的自动化测试工具上启动测试。若你想使用 XCUITest ,可以在 Xcode 中创建一个新的测试项目,然后选择 "File" -> "New" -> "File"。在弹出的窗口上,选择 "iOS" -> "Test Case Class",然后点击 "Next"。在出现的窗口中,选择 "Unit Test Bundle" 并命名它,然后选择您的测试运行器。

在新的测试项目中,您可以使用 XCUITest 所提供的测试 API 对您的 iOS App 进行自动化测试。以下是一个简单的代码示例:

```

class MyAutomationTests: XCTestCase {

let app = XCUIApplication()

override func setUp() {

super.setUp()

continueAfterFailure = false

app.launch()

}

func testButtonTaps() {

let button = app.buttons["My Button"]

button.tap()

XCTAssert(button.label == "Tapped!")

}

}

```

在执行该测试时,WebDriverAgent 将连接到您的 iOS 设备,并执行您的测试用例。

案例说明

下面是一个使用 WebDriverAgent 进行 iOS App UI 自动化测试的简单案例:

1. 创建 XCUITest 项目

在 Xcode 中创建一个新的 XCUITest 项目,以便您可以使用 XCUITest API 来自动化测试您的 iOS 应用程序。在 Xcode 中,选择 "File" -> "New" -> "Project"。在弹出的窗口上,选择 "iOS" -> "Test" -> "iOS Unit Testing Bundle",然后点击 "Next"。在出现的窗口中,选择 "iPhone" 并命名它,然后选择您的测试运行器。创建一个新的测试类并将其命名为 "MyUITest"。

2. 导入 WebDriverAgent

在终端中,进入 iOS 项目的根目录,然后使用以下命令更新 Carthage 依赖库:

```

carthage update --platform iOS

```

在 Xcode 中,选择 Product → Scheme → Manage Schemes。在 Manage Schemes 窗口中,勾选 "WebDriverAgent",然后点击 "Close"。在 Product 工具栏中,选择 "WebDriverAgent-Runner" 作为您当前的运行器,并点击运行按钮。

3. 创建 UI 测试

在 MyUITest 中,添加以下两个类级别属性:

```

var app: XCUIApplication!

var webView: XCUIElement!

```

在 testExample 中,添加以下代码:

```

app = XCUIApplication()

app.launch()

// 绑定 WDA 进程

let wdaProcess = Process.launchedProcess(launchPath: "/bin/bash",

arguments: ["-c",

"ps aux | grep WebDriverAgentRunner | grep -v grep | awk '{print $2}'"]

)

let wdaProcessID = String(data: wdaProcess.standardOutput.readDataToEndOfFile(),

encoding: .utf8)?

.trimmingCharacters(in: .newlines)

let wdaSocketPath = "/tmp/WebDriverAgentRunner" + wdaProcessID!

let wdaSocketUrl = URL(string: wdaSocketPath)!

// 初始化 webview

let json = "{\"desiredCapabilities\":{\"bundleId\":\"com.myapp\",\"app\":\"/path/to/myapp.app\"}}"

let request = URLRequest(url: wdaSocketUrl.appendingPathComponent("session"))

let session = URLSession.shared

let semaphore = DispatchSemaphore(value: 0)

let task = session.dataTask(with: request) { data, response, error in

guard let jsonData = data else {

XCTFail("No data in response from WebDriverAgent session creation.")

return

}

let jsonDict = try! JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: Any]

let sessionId = jsonDict["sessionId"] as! String

let webSocketUrl = URL(string: "ws://localhost:8100/session/\(sessionId)/ws")!

let webSocket = WebSocket(url: webSocketUrl)

webSocket.connect()

let message = WebSocketMessageBuilder()

.withMethod("POST")

.withPath("/session/\(sessionId)/context")

.withJsonBody(json)

.build()

webSocket.sendMessage(message)

semaphore.signal()

}

task.resume()

let timeoutSeconds = 60.0

let timeout = DispatchTime.now() + timeoutSeconds

let _ = semaphore.wait(timeout: timeout)

webView = app.webViews.element(boundBy: 0)

webView.tap()

let button = webView.buttons["My Button"]

button.tap()

```

这段代码会在 iOS 设备上启动 WebDriverAgent,并将其绑定到 XCTest 进程中。一旦绑定完成,该代码会给 WebDriverAgent 发送一个初始化请求,然后绑定正在运行的 iOS 应用程序的 webview,在 webview 中点击一个按钮并断言结果。

4. 运行测试

在 Xcode 中,使用快捷键 Command + U 或点击 "Product" -> "Test" 来运行测试。一旦运行完成,您就可以在测试日志中看到测试结果。

总结

以上是使用 WebDriverAgent 进行 iOS 应用程序自动化测试的详细介绍和案例说明。由于 WebDriverAgent 是一个强大的工具,还有很多其他的用例,但是大体的流程应该是相似的。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(28) 打赏

评论列表 共有 2 条评论

林空鹿饮溪 11月前 回复TA

想说的话拖着不说,久了自然心事重重;想做的事拖着不做,久了自然压力重重。当拖延成了习惯,疲惫不堪就成了常态。

梦阮尘 1年前 回复TA

大财小财,愿你八方来财;养财蓄财,愿你年年添财;招财进财,记得与气生财。财神日,祝你财气冲天、财运亨通!

立即
投稿
发表
评论
返回
顶部