Cấu hình
Dựa trên loại thiết lập (ví dụ: sử dụng các ràng buộc giao thức raw, WebdriverIO như gói độc lập hoặc trình chạy kiểm thử WDIO), có một tập hợp các tùy chọn khác nhau để điều khiển môi trường.
Tùy chọn WebDriver
Các tùy chọn sau được định nghĩa khi sử dụng gói giao thức webdriver
:
protocol
Giao thức để sử dụng khi giao tiếp với máy chủ trình điều khiển.
Loại: String
Mặc định: http
hostname
Host của máy chủ trình điều khiển.
Loại: String
Mặc định: 0.0.0.0
port
Cổng mà máy chủ trình điều khiển đang sử dụng.
Loại: Number
Mặc định: undefined
path
Đường dẫn đến điểm cuối máy chủ trình điều khiển.
Loại: String
Mặc định: /
queryParams
Các tham số truy vấn được truyền đến máy chủ trình điều khiển.
Loại: Object
Mặc định: undefined
user
Tên người dùng dịch vụ đám mây của bạn (chỉ hoạt động cho tài khoản Sauce Labs, Browserstack, TestingBot hoặc LambdaTest). Nếu được thiết lập, WebdriverIO sẽ tự động thiết lập các tùy chọn kết nối cho bạn. Nếu bạn không sử dụng nhà cung cấp đám mây, tùy chọn này có thể được sử dụng để xác thực bất kỳ máy chủ WebDriver nào khác.
Loại: String
Mặc định: undefined
key
Khóa truy cập hoặc khóa bí mật dịch vụ đám mây của bạn (chỉ hoạt động cho tài khoản Sauce Labs, Browserstack, TestingBot hoặc LambdaTest). Nếu được thiết lập, WebdriverIO sẽ tự đ ộng thiết lập các tùy chọn kết nối cho bạn. Nếu bạn không sử dụng nhà cung cấp đám mây, tùy chọn này có thể được sử dụng để xác thực bất kỳ máy chủ WebDriver nào khác.
Loại: String
Mặc định: undefined
capabilities
Xác định các khả năng bạn muốn chạy trong phiên WebDriver của mình. Xem thêm chi tiết trong Giao thức WebDriver. Nếu bạn chạy một trình điều khiển cũ không hỗ trợ giao thức WebDriver, bạn cần sử dụng khả năng JSONWireProtocol để chạy phiên thành công.
Bên cạnh các khả năng dựa trên WebDriver, bạn có thể áp dụng các tùy chọn cụ thể cho trình duyệt và nhà cung cấp, cho phép cấu hình sâu hơn cho trình duyệt từ xa hoặc thiết bị. Những tùy chọn này được ghi trong tài liệu của nhà cung cấp tương ứng, ví dụ:
goog:chromeOptions
: cho Google Chromemoz:firefoxOptions
: cho Mozilla Firefoxms:edgeOptions
: cho Microsoft Edgesauce:options
: cho Sauce Labsbstack:options
: cho BrowserStackselenoid:options
: cho Selenoid
Ngoài ra, một tiện ích hữu ích là Bộ cấu hình Kiểm thử Tự động của Sauce Labs, giúp bạn tạo đối tượng này bằng cách kết hợp các khả năng mong muốn.
Loại: Object
Mặc định: null
Ví dụ:
{
browserName: 'chrome', // các tùy chọn: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // phiên bản trình duyệt
platformName: 'Windows 10' // nền tảng OS
}
Nếu bạn đang chạy kiểm thử web hoặc gốc trên thiết bị di động, capabilities
khác v ới giao thức WebDriver. Xem Tài liệu Appium để biết thêm chi tiết.
logLevel
Mức độ chi tiết của log.
Loại: String
Mặc định: info
Tùy chọn: trace
| debug
| info
| warn
| error
| silent
outputDir
Thư mục để lưu trữ tất cả các tệp log của trình chạy kiểm thử (bao gồm log của trình báo cáo và log wdio
). Nếu không được thiết lập, tất cả log sẽ được truyền đến stdout
. Vì hầu hết các trình báo cáo được tạo để ghi log vào stdout
, nên chỉ nên sử dụng tùy chọn này cho các trình báo cáo cụ thể, nơi việc đẩy báo cáo vào một tệp có ý nghĩa hơn (như trình báo cáo junit
, chẳng hạn).
Khi chạy ở chế độ độc lập, log duy nhất được tạo bởi WebdriverIO sẽ là log wdio
.
Loại: String
Mặc định: null
connectionRetryTimeout
Thời gian chờ cho bất kỳ yêu cầu WebDriver nào đ ến trình điều khiển hoặc lưới.
Loại: Number
Mặc định: 120000
connectionRetryCount
Số lần thử lại tối đa cho yêu cầu đến máy chủ Selenium.
Loại: Number
Mặc định: 3
agent
Cho phép bạn sử dụng một http
/https
/http2
agent tùy chỉnh để thực hiện các yêu cầu.
Loại: Object
Mặc định:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Chỉ định headers
tùy chỉnh để truyền vào mọi yêu cầu WebDriver. Nếu Selenium Grid của bạn yêu cầu Xác thực Cơ bản, chúng tôi khuyên bạn nên truyền vào header Authorization
thông qua tùy chọn này để xác thực các yêu cầu WebDriver của bạn, ví dụ:
import { Buffer } from 'buffer';
// Đọc tên người dùng và mật khẩu từ biến môi trường
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Kết hợp tên người dùng và mật khẩu với dấu hai chấm ngăn cách
const credentials = `${username}:${password}`;
// Mã hóa thông tin đăng nhập bằng Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Loại: Object
Mặc định: {}
transformRequest
Hàm chặn tùy chọn yêu cầu HTTP trước khi yêu cầu WebDriver được thực hiện
Loại: (RequestOptions) => RequestOptions
Mặc định: không có
transformResponse
Hàm chặn đối tượng phản hồi HTTP sau khi phản hồi WebDriver đã đến. Hàm này được truyền đối tượng phản hồi gốc là đối số đầu tiên và RequestOptions
tương ứng là đối số thứ hai.
Loại: (Response, RequestOptions) => Response
Mặc định: không có
strictSSL
Liệu có yêu cầu chứng chỉ SSL phải hợp lệ hay không.
Nó có thể được thiết lập thông qua biến môi trường là STRICT_SSL
hoặc strict_ssl
.
Loại: Boolean
Mặc định: true
enableDirectConnect
Liệu có bật tính năng kết nối trực tiếp của Appium hay không. Nó không làm gì nếu phản hồi không có các khóa thích hợp trong khi cờ này được bật.
Loại: Boolean
Mặc định: true
cacheDir
Đường dẫn đến thư mục gốc của bộ nhớ cache. Thư mục này được sử dụng để lưu trữ tất cả các trình điều khiển được tải xuống khi cố gắng bắt đầu một phiên.
Loại: String
Mặc định: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
WebdriverIO
Các tùy chọn sau (bao gồm các tùy chọn đã liệt kê ở trên) có thể được sử dụng với WebdriverIO ở chế độ độc lập:
automationProtocol
Xác định giao thức bạn muốn sử dụng cho tự động hóa trình duyệt. Hiện tại chỉ webdriver
được hỗ trợ, vì đây là công nghệ tự động hóa trình duyệt chính mà WebdriverIO sử dụng.
Nếu bạn muốn tự động hóa trình duyệt bằng công nghệ tự động hóa khác, hãy đảm bảo bạn thiết lập thuộc tính này đến một đường dẫn giải quyết cho một module tuân thủ giao diện sau:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Bắt đầu một phiên tự động hóa và trả về một WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* với các lệnh tự động hóa tương ứng. Xem gói [webdriver](https://www.npmjs.com/package/webdriver)
* làm triển khai tham khảo
*
* @param {Capabilities.RemoteConfig} options Tùy chọn WebdriverIO
* @param {Function} hook cho phép sửa đổi client trước khi nó được phát hành từ hàm
* @param {PropertyDescriptorMap} userPrototype cho phép người dùng thêm lệnh giao thức tùy chỉnh
* @param {Function} customCommandWrapper cho phép sửa đổi lệnh thực thi
* @returns một phiên bản client tương thích với WebdriverIO
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* cho phép người dùng kết nối với các phiên hiện có
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Thay đổi ID phiên và khả năng trình duyệt cho phiên mới
* trực tiếp vào đối tượng trình duyệt được truyền vào
*
* @optional
* @param {object} instance đối tượng chúng ta nhận được từ phiên trình duyệt mới.
* @returns {string} id phiên mới của trình duyệt
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Loại: String
Mặc định: webdriver
baseUrl
Rút ngắn các lệnh url
bằng cách thiết lập một URL cơ sở.
- Nếu tham số
url
của bạn bắt đầu bằng/
, thìbaseUrl
được thêm vào phía trước (ngoại trừ đường dẫnbaseUrl
, nếu có). - Nếu tham số
url
của bạn bắt đầu mà không có scheme hoặc/
(nhưsome/path
), thì toàn bộbaseUrl
được thêm vào trực tiếp phía trước.
Loại: String
Mặc định: null
waitforTimeout
Thời gian chờ mặc định cho tất cả các lệnh waitFor*
. (Lưu ý chữ f
viết thường trong tên tùy chọn.) Thời gian chờ này chỉ ảnh hưởng đến các lệnh bắt đầu bằng waitFor*
và thời gian chờ mặc định của chúng.
Để tăng thời gian chờ cho một bài kiểm thử, vui lòng xem tài liệu về framework.
Loại: Number
Mặc định: 5000
waitforInterval
Khoảng thời gian mặc định cho tất cả các lệnh waitFor*
để kiểm tra xem trạng thái mong đợi (ví dụ: hiển thị) đã thay đổi hay chưa.
Loại: Number
Mặc định: 100
region
Nếu chạy trên Sauce Labs, bạn có thể chọn chạy kiểm thử giữa các trung tâm dữ liệu khác nhau: US hoặc EU.
Để thay đổi khu vực của bạn sang EU, hãy thêm region: 'eu'
vào cấu hình của bạn.
Lưu ý: Điều này chỉ có tác dụng nếu bạn cung cấp các tùy chọn user
và key
được kết nối với tài khoản Sauce Labs của bạn.
Loại: String
Mặc định: us
(chỉ cho máy ảo và/hoặc giả lập/mô phỏng)
Tùy chọn Trình chạy kiểm thử
Các tùy chọn sau (bao gồm các tùy chọn đã liệt kê ở trên) chỉ được định nghĩa khi chạy WebdriverIO với trình chạy kiểm thử WDIO: