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
Nome | Tipo | Dettagli |
---|---|---|
context | string, object, function |
Restituisce
- <
Promise<string>
>returns
: l'id del contesto attualmente attivo