跳至主要内容

switchFrame

将活动上下文切换到一个框架,例如页面上的 iframe。您可以通过多种方式查询页面上的框架

  • 如果给定一个字符串,它将切换到上下文 ID、URL 或包含该字符串的 URL 匹配的框架

    // switch to a frame that has a specific url or contains a string in the url
    await browser.url('https://w3schools.org.cn/tags/tryit.asp?filename=tryhtml_iframe')
    // Note: this frame is located in a nested iframe, however you only need to provide
    // the frame url of your desired frame
    await browser.switchFrame('https://w3schools.org.cn')
    // check the title of the page
    console.log(await browser.execute(() => [document.title, document.URL]))
    // outputs: [ 'W3Schools Online Web Tutorials', 'https://w3schools.org.cn/' ]
  • 如果您有框架的上下文 ID,您可以直接使用它

    // switch to a frame that has a certain context id
    await browser.switchFrame('A5734774C41F8C91D483BDD4022B2EF3')
  • 如果给定一个引用iframe元素的 WebdriverIO 元素,它将切换到该框架

    // switch to a frame element queried from current context
    await browser.switchFrame($('iframe'))
  • 如果给定一个函数,它将循环遍历页面上的所有 iframe 并 在上下文对象中调用该函数。该函数应返回一个布尔值,指示是否应选择该框架。该函数将在浏览器中执行,并允许访问所有 Web API,例如

    // switch to first frame that contains an element with id "#frameContent"
    await browser.switchFrame(() => Boolean(document.querySelector('#frameContent')))
    // switch to first frame that contains "webdriver" in the URL
    await browser.switchFrame(() => document.URL.includes('webdriver'))
  • 如果给定null,它将切换到顶级框架

    // first switch into a frame
    await browser.switchFrame($('iframe'))
    // do more automation within that frame, then ...

    // switch to the top level frame
    await browser.switchFrame(null)

切换到框架后,所有后续命令都将在该框架的上下文中执行,包括导航到不同的页面。

用法
browser.switchFrame(context)
参数
名称类型详情
上下文字符串对象函数

欢迎!我如何帮助您?

WebdriverIO AI Copilot