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/
想说的话拖着不说,久了自然心事重重;想做的事拖着不做,久了自然压力重重。当拖延成了习惯,疲惫不堪就成了常态。
大财小财,愿你八方来财;养财蓄财,愿你年年添财;招财进财,记得与气生财。财神日,祝你财气冲天、财运亨通!