swift-webdriver

Build & Test

一个 Swift 库,用于通过与 WebDriver 端点(例如 SeleniumAppiumWindows Application Driver)通信,实现应用程序和浏览器的 UI 自动化。

swift-webdriver 旨在支持 Selenium 传统 JSON Wire 协议及其后继者,即 W3C 标准 WebDriver 协议,以对抗任何 WebDriver 端点。 在实践中,它已针对基于 Windows 的 WinAppDriver 场景进行了开发和测试,并且在其他环境中可能存在差距。

用法

使用 WinAppDriverswift-webdriver “Hello world” 示例可能如下所示

let session = try Session(
    webDriver: WinAppDriver.start(), // Requires WinAppDriver to be installed on the machine
    desiredCapabilities: WinAppDriver.Capabilities.startApp(name: "notepad.exe"))
try session.findElement(locator: .name("close")).click()

要在您的项目中使用 swift-webdriver,请在您的 Package.swift 文件中添加对其的引用,如下所示

let package = Package(
    name: "MyPackage",
    dependencies: [
        .package(url: "https://github.com/thebrowsercompany/swift-webdriver", branch: "main")
    ],
    targets: [
        .testTarget(
            name: "UITests",
            dependencies: [
                .product(name: "WebDriver", package: "swift-webdriver"),
            ]
        )
    ]
)

使用 swift buildswift test 构建并运行测试,或使用 Visual Studio Code 的 Swift 扩展

有关其他示例,请参阅 Tests\WebDriverTests 目录。

CMake

要使用 CMake 构建,请使用 Ninja 生成器

cmake -S . -B build -G Ninja
cmake --build .\build\

架构

该库有两个逻辑层

在提供 WebDriver 端点特定功能(例如启动和使用 WinAppDriver 实例)的地方,代码尽可能与通用 WebDriver 功能分开。

超时

对于 UI 测试,通常支持重试某些操作直到超时时间过去(以应对动画或异步)非常有用。 swift-webdriver 提供了两种这样的机制

贡献

我们欢迎以下方面的贡献

请在您的提交中包含测试。启动应用程序的测试应仅依赖于 Windows 操作系统附带的 GUI 应用程序,例如记事本。