url
url
コマンドはブラウザでURLを読み込みます。設定でbaseUrlが指定されている場合、node.jsのurl.resolve()メソッドを使用してurlパラメータの前に追加されます。前回と同じURLでbrowser.url('...')
を呼び出すと、ページの再読み込みがトリガーされます。ただし、URLにハッシュが含まれている場合、ブラウザは新しいナビゲーションをトリガーせず、ユーザーはrefreshを実行して新しいナビゲーションをトリガーする必要があります。
このコマンドはページロードのリクエストとレスポンスデータに関する情報を含むWebdriverIO.Request
オブジェクトを返します:
interface WebdriverIO.Request {
id?: string
url: string
timestamp: number
navigation?: string
redirectChain?: string[],
headers: Record<string, string>
cookies?: NetworkCookie[]
\/**
* Error message if request failed
*\/
error?: string
response?: {
fromCache: boolean
headers: Record<string, string>
mimeType: string
status: number
},
/**
* List of all requests that were made due to the main request.
* Note: the list may be incomplete and does not contain request that were
* made after the command has finished.
*
* The property will be undefined if the request is not a document request
* that was initiated by the browser.
*\/
children?: Request[]
}
このコマンドは以下のオプションをサポートしています:
wait
要求されたリソースがコマンドを完了する前に持つべき状態。 以下の状態をサポートしています:
none
: ページリクエスト後とレスポンス受信後に待機しないinteractive
: ページがインタラクティブになるまで待機complete
: ページのDOMツリーが完全に読み込まれるまで待機networkIdle
: 保留中のネットワークリクエストがなくなるまで待機
headers
リクエストと共に送信されるヘッダー。
デフォルト: {}
auth
基本認証の資格情報。
注:これはheaders
オプションで提供されている既存のAuthorization
ヘッダーを上書きします。
timeout
数値に設定すると、コマンドは指定されたミリ秒数だけページがすべてのレスポンスを読み込むのを待ってから戻ります。
注意:これが影響を与えるには、wait
オプションがnetworkIdle
に設定されている必要があります。
デフォルト: 5000
使用法
browser.url(url, { wait, timeout, onBeforeLoad, auth, headers })
パラメータ
名前 | 型 | 詳細 |
---|---|---|
url 省略可能 | string | ナビゲートするURL |
options 省略可能 | UrlOptions | ナビゲーションオプション |
options.wait 省略可能 | 'none', 'interactive', 'networkIdle', 'complete' | コマンドを完了する前にリクエストされたリソースがあるべき状態。デフォルト: 'complete' |
options.timeout 省略可能 | number | 数値に設定すると、コマンドは返す前に指定されたミリ秒数だけページがすべてのレスポンスを読み込むのを待ちます。デフォルト: 5000 |
options.onBeforeLoad 省略可能 | Function | ページがすべてのリソースを読み込む前に呼び出される関数。環境を簡単にモックすることができます。例えば、アプリケーションが使用するWeb APIを上書きするなど。 |
options.auth 省略可能 | {user: string, pass: string} | 基本認証の資格情報 |
options.headers 省略可能 | Record<string, string> | リクエストと共に送信されるヘッダー |
例
url.js
// 新しいURLにナビゲート
const request = await browser.url('https://webdriver.io');
// URLをログ出力
console.log(request.url); // 出力: "https://webdriver.io"
console.log(request.response?.status); // 出力: 200
console.log(request.response?.headers); // 出力: { 'content-type': 'text/html; charset=UTF-8' }
baseUrlResolutions.js
// ベースURLがhttp://example.com/siteの場合、以下のurlパラメータは次のように解決されます:
// スキームを提供する場合:
// https://webdriver.io
await browser.url('https://webdriver.io');
// スラッシュで始まらない場合、URLはbaseUrlに対して相対的に解決されます
// http://example.com/site/relative
await browser.url('relative');
// スラッシュで始まる場合、URLはbaseUrlのルートパスに対して相対的に解決されます
// http://example.com/rootRelative
await browser.url('/rootRelative');
basicAuth.js
// 基本認証付きのURLにナビゲート
await browser.url('https://the-internet.herokuapp.com/basic_auth', {
auth: {
user
pass
}
});
await expect($('p=Congratulations! You must have the proper credentials.').toBeDisplayed();
onBeforeLoad.js
// URLにナビゲートしてバッテリーAPIをモック
await browser.url('https://pazguille.github.io/demo-battery-api/', {
onBeforeLoad (win) {
// "navigator.battery"プロパティをモック
// モックの充電オブジェクトを返す
win.navigator.getBattery = () => Promise.resolve({
level: 0.5,
charging: false,
chargingTime: Infinity,
dischargingTime: 3600, // 秒
})
}
})
// 実際のテキストをアサートできます - 50%充電されています
await expect($('.battery-percentage')).toHaveText('50%')
// そして1時間分の電力があります
await expect($('.battery-remaining')).toHaveText('01:00)
戻り値
- <WebdriverIO.Request>
returns
: リクエストとレスポンスデータに関する情報を含むページロードのリクエストオブジェクト