メインコンテンツにスキップ

switchFrame

アクティブなコンテキストをフレーム(ページ上のiframeなど)に切り替えます。ページ上のフレームを照会するには複数の方法があります:

  • 文字列を指定すると、一致するコンテキストID、URLまたはその文字列を含むURLを持つフレームに切り替えます

    // 特定のURLを持つか、URLに文字列を含むフレームに切り替える
    await browser.url('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe')
    // 注意: このフレームはネストされたiframe内にありますが、目的のフレームの
    // フレームURLのみを提供する必要があります
    await browser.switchFrame('https://www.w3schools.com')
    // ページのタイトルを確認する
    console.log(await browser.execute(() => [document.title, document.URL]))
    // 出力: [ 'W3Schools Online Web Tutorials', 'https://www.w3schools.com/' ]
  • フレームのコンテキストIDがある場合は、それを直接使用できます

    // 特定のコンテキストIDを持つフレームに切り替える
    await browser.switchFrame('A5734774C41F8C91D483BDD4022B2EF3')
  • iframe要素を参照するWebdriverIO要素が指定された場合、そのフレームに切り替えます

    // 現在のコンテキストから照会されたフレーム要素に切り替える
    await browser.switchFrame($('iframe'))
  • 関数が指定された場合、ページ上のすべてのiframeをループし、コンテキストオブジェクト内でその関数を呼び出します。 関数はフレームを選択すべきかどうかを示すブール値を返す必要があります。この関数はブラウザ内で実行され、 すべてのWeb APIにアクセスできます。例:

    // id "#frameContent"を持つ要素を含む最初のフレームに切り替える
    await browser.switchFrame(() => Boolean(document.querySelector('#frameContent')))
    // URLに "webdriver" を含む最初のフレームに切り替える
    await browser.switchFrame(() => document.URL.includes('webdriver'))
  • nullが指定された場合、最上位のフレームに切り替えます

    // まずフレームに切り替える
    await browser.switchFrame($('iframe'))
    // そのフレーム内でさらに自動化を行い、その後...

    // 最上位のフレームに切り替える
    await browser.switchFrame(null)

フレームに切り替えると、異なるページへのナビゲーションを含むすべての後続のコマンドは、そのフレームのコンテキスト内で実行されます。

使用法
browser.switchFrame(context)
パラメータ
名前タイプ詳細
contextstring, object, function
戻り値
  • <Promise<string>> returns: 現在のアクティブなコンテキストID

Welcome! How can I help?

WebdriverIO AI Copilot