Vai al contenuto principale

switchFrame

Cambia il contesto attivo a un frame, ad esempio un iframe nella pagina. Ci sono diversi modi per interrogare un frame nella pagina:

  • Se viene fornita una stringa, passa al frame con un id di contesto corrispondente, url o url che contiene quella stringa

    // passa a un frame che ha un url specifico o contiene una stringa nell'url
    await browser.url('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe')
    // Nota: questo frame si trova in un iframe annidato, tuttavia è necessario fornire solo
    // l'url del frame desiderato
    await browser.switchFrame('https://www.w3schools.com')
    // controlla il titolo della pagina
    console.log(await browser.execute(() => [document.title, document.URL]))
    // output: [ 'W3Schools Online Web Tutorials', 'https://www.w3schools.com/' ]
  • Se hai l'id di contesto del frame puoi usarlo direttamente

    // passa a un frame che ha un certo id di contesto
    await browser.switchFrame('A5734774C41F8C91D483BDD4022B2EF3')
  • Se viene fornito un elemento WebdriverIO che fa riferimento a un elemento iframe, passerà a quel frame

    // passa a un elemento frame interrogato dal contesto corrente
    await browser.switchFrame($('iframe'))
  • Se viene fornita una funzione, scorrerà tutti gli iframe nella pagina e chiamerà la funzione all'interno dell'oggetto contesto. La funzione dovrebbe restituire un booleano che indica se il frame deve essere selezionato. La funzione verrà eseguita all'interno del browser e consente l'accesso a tutte le API Web, ad esempio:

    // passa al primo frame che contiene un elemento con id "#frameContent"
    await browser.switchFrame(() => Boolean(document.querySelector('#frameContent')))
    // passa al primo frame che contiene "webdriver" nell'URL
    await browser.switchFrame(() => document.URL.includes('webdriver'))
  • Se viene fornito null, passerà al frame di livello superiore

    // prima passa a un frame
    await browser.switchFrame($('iframe'))
    // esegui altre automazioni all'interno di quel frame, poi...

    // passa al frame di livello superiore
    await browser.switchFrame(null)

Una volta passato a un frame, tutti i comandi successivi verranno eseguiti nel contesto di quel frame, inclusa la navigazione verso pagine diverse.

Utilizzo
browser.switchFrame(context)
Parametri
NomeTipoDettagli
contextstring, object, function
Restituisce
  • <Promise<string>> returns: l'id del contesto attualmente attivo

Welcome! How can I help?

WebdriverIO AI Copilot