Các Module
WebdriverIO xuất bản nhiều module khác nhau lên NPM và các registry khác mà bạn có thể sử dụng để xây dựng framework tự động hóa của riêng mình. Xem thêm tài liệu về các loại thiết lập WebdriverIO tại đây.
webdriver
và devtools
Các gói giao thức (webdriver
và devtools
) cung cấp một lớp với các hàm tĩnh sau đây được đính kèm cho phép bạn khởi tạo các phiên:
newSession(options, modifier, userPrototype, customCommandWrapper)
Bắt đầu một phiên mới với các khả năng cụ thể. Dựa trên phản hồi phiên, các lệnh từ các giao thức khác nhau sẽ được cung cấp.
Tham số
options
: Tùy chọn WebDrivermodifier
: hàm cho phép sửa đổi thể hiện client trước khi nó được trả vềuserPrototype
: đối tượng thuộc tính cho phép mở rộng prototype của thể hiệncustomCommandWrapper
: hàm cho phép bao bọc chức năng xung quanh các lệnh gọi hàm
Trả về
- Đối tượng Browser
Ví dụ
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})
attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)
Gắn kết với một phiên WebDriver hoặc DevTools đang chạy.
Tham số
attachInstance
: thể hiện để gắn kết với một phiên hoặc ít nhất là một đối tượng với thuộc tínhsessionId
(ví dụ:{ sessionId: 'xxx' }
)modifier
: hàm cho phép sửa đổi thể hiện client trước khi nó được trả vềuserPrototype
: đối tượng thuộc tính cho phép mở rộng prototype của thể hiệncustomCommandWrapper
: hàm cho phép bao bọc chức năng xung quanh các lệnh gọi hàm
Trả về
- Đối tượng Browser
Ví dụ
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)
reloadSession(instance)
Tải lại phiên với thể hiện đã cung cấp.
Tham số
instance
: thể hiện gói để tải lại
Ví dụ
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)
webdriverio
Tương tự như các gói giao thức (webdriver
và devtools
), bạn cũng có thể sử dụng API của gói WebdriverIO để quản lý các phiên. Các API có thể được import bằng cách sử dụng import { remote, attach, multiremote } from 'webdriverio'
và chứa các chức năng sau:
remote(options, modifier)
Bắt đầu một phiên WebdriverIO. Thể hiện chứa tất cả các lệnh giống như gói giao thức nhưng với các hàm bậc cao hơn, xem tài liệu API.
Tham số
options
: Tùy chọn WebdriverIOmodifier
: hàm cho phép sửa đổi thể hiện client trước khi nó được trả về
Trả về
- Đối tượng Browser
Ví dụ
import { remote } from 'webdriverio'
const browser = await remote({
capabilities: { browserName: 'chrome' }
})
attach(attachOptions)
Gắn kết với một phiên WebdriverIO đang chạy.
Tham số
attachOptions
: thể hiện để gắn kết với một phiên hoặc ít nhất là một đối tượng với thuộc tínhsessionId
(ví dụ:{ sessionId: 'xxx' }
)
Trả về
- Đối tượng Browser
Ví dụ
import { remote, attach } from 'webdriverio'
const browser = await remote({...})
const newBrowser = await attach(browser)
multiremote(multiremoteOptions)
Khởi tạo một thể hiện multiremote cho phép bạn điều khiển nhiều phiên trong một thể hiện duy nhất. Xem các ví dụ multiremote của chúng tôi để biết các trường hợp sử dụng cụ thể.
Tham số
multiremoteOptions
: một đối tượng với các khóa đại diện cho tên trình duyệt và Tùy chọn WebdriverIO của chúng.
Trả về
- Đối tượng Browser
Ví dụ
import { multiremote } from 'webdriverio'
const matrix = await multiremote({
myChromeBrowser: {
capabilities: { browserName: 'chrome' }
},
myFirefoxBrowser: {
capabilities: { browserName: 'firefox' }
}
})
await matrix.url('http://json.org')
await matrix.getInstance('browserA').url('https://google.com')
console.log(await matrix.getTitle())
// returns ['Google', 'JSON']
@wdio/cli
Thay vì gọi lệnh wdio
, bạn cũng có thể bao gồm test runner như một module và chạy nó trong một môi trường tùy ý. Để làm điều đó, bạn cần phải yêu cầu gói @wdio/cli
dưới dạng module, như thế này:
- EcmaScript Modules
- CommonJS
import Launcher from '@wdio/cli'
const Launcher = require('@wdio/cli').default
Sau đó, tạo một thể hiện của launcher và chạy bài kiểm tra.
Launcher(configPath, opts)
Hàm tạo lớp Launcher
mong đợi URL đến tệp cấu hình và một đối tượng opts
với các cài đặt sẽ ghi đè lên các cài đặt trong tệp cấu hình.
Tham số
configPath
: đường dẫn đếnwdio.conf.js
để chạyopts
: các đối số (<RunCommandArguments>
) để ghi đè các giá trị từ tệp cấu hình
Ví dụ
const wdio = new Launcher(
'/path/to/my/wdio.conf.js',
{ spec: '/path/to/a/single/spec.e2e.js' }
)
wdio.run().then((exitCode) => {
process.exit(exitCode)
}, (error) => {
console.error('Launcher failed to start the test', error.stacktrace)
process.exit(1)
})
Lệnh run
trả về một Promise. Nó được giải quyết nếu các bài kiểm tra chạy thành công hoặc thất bại, và nó bị từ chối nếu launcher không thể bắt đầu chạy các bài kiểm tra.
@wdio/browser-runner
Khi chạy các bài kiểm tra đơn vị hoặc thành phần sử dụng trình chạy trình duyệt của WebdriverIO, bạn có thể import các tiện ích mô phỏng cho các bài kiểm tra của mình, ví dụ:
import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'
Các export được đặt tên sau đây có sẵn:
fn
Hàm mô phỏng, xem thêm trong tài liệu Vitest chính thức.
spyOn
Hàm theo dõi, xem thêm trong tài li ệu Vitest chính thức.
mock
Phương thức để mô phỏng tệp hoặc module phụ thuộc.
Tham số
moduleName
: đường dẫn tương đối đến tệp được mô phỏng hoặc tên module.factory
: hàm để trả về giá trị được mô phỏng (tùy chọn)
Ví dụ
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))
mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})
unmock
Hủy mô phỏng phụ thuộc được định nghĩa trong thư mục mô phỏng thủ công (__mocks__
).
Tham số
moduleName
: tên của module cần hủy mô phỏng.
Ví dụ
unmock('lodash')