Selenium Form WebElement: TextBox, Button, sendkeys (), clic ()

Sommario:

Anonim

I moduli sono gli elementi web fondamentali per ricevere informazioni dai visitatori del sito. I moduli Web hanno diversi elementi GUI come caselle di testo, campi password, caselle di controllo, pulsanti di opzione, menu a discesa, input di file, ecc.

Vedremo come accedere a questi diversi elementi del modulo utilizzando Selenium Web Driver con Java. Il selenio incapsula ogni elemento del modulo come oggetto di WebElement. Fornisce API per trovare gli elementi e intraprendere azioni su di essi come inserire testo nelle caselle di testo, fare clic sui pulsanti, ecc. Vedremo i metodi disponibili per accedere a ciascun elemento del modulo.

In questo tutorial vedremo come identificare i seguenti elementi del modulo

  • Introduzione a WebElement, findElement (), findElements ()
  • Casella di input
  • Immissione di valori nelle caselle di immissione
  • Eliminazione dei valori nelle caselle di immissione
  • Bottoni
  • Pulsanti di invio
  • Codice completo
  • Risoluzione dei problemi

Introduzione a WebElement, findElement (), findElements ()

Selenium Web Driver incapsula un semplice elemento del modulo come oggetto di WebElement.

Esistono varie tecniche con cui il WebDriver identifica gli elementi del modulo in base alle diverse proprietà degli elementi Web come ID, Nome, Classe, XPath, Tagname, Selettori CSS, testo del collegamento, ecc.

Web Driver fornisce i seguenti due metodi WebElement per trovare gli elementi.

  • findElement () : trova un singolo elemento web e restituisce un oggetto WebElement Selenium.
  • findElements () - restituisce un elenco di oggetti WebElement che corrispondono ai criteri del localizzatore.

Vediamo i frammenti di codice per ottenere un singolo elemento - Campo di testo in una pagina web come oggetto di WebElement utilizzando il metodo findElement (). Tratteremo il metodo findElements () per trovare più elementi nei tutorial successivi.

Passaggio 1: è necessario importare questo pacchetto per creare oggetti di Web Elements

Passaggio 2: è necessario chiamare il metodo findElement () disponibile sulla classe WebDriver e ottenere un oggetto di WebElement.

Fare riferimento di seguito per vedere come è fatto.

Casella di input

Le caselle di input si riferiscono a uno di questi due tipi:

  1. Campi di testo: caselle di testo di input al selenio che accettano i valori digitati e li mostrano così come sono.
  2. Campi password : caselle di testo che accettano valori digitati ma li mascherano come una serie di caratteri speciali (comunemente punti e asterischi) per evitare la visualizzazione di valori sensibili.

Localizzatori

Il metodo findElement () accetta un parametro che è un localizzatore dell'elemento. Diversi locatori come By.id (), By.name (), By.xpath (), By.CSSSelector () ecc. Localizzano gli elementi nella pagina usando le loro proprietà come `` '' id, nome o percorso, eccetera.

Puoi usare plugin come Fire path per ottenere aiuto per ottenere l'id, xpath, ecc. Degli elementi.

Utilizzando il sito di esempio http://demo.guru99.com/test/login.html fornito di seguito è il codice per individuare il campo di testo "Indirizzo e-mail" utilizzando il localizzatore di id e il campo "Password" utilizzando il localizzatore di nomi.

  1. Il campo di testo dell'e-mail si trova vicino all'ID
  2. Il campo della password si trova per nome

sendkeys in selenio

sendkeys () in Selenium è un metodo utilizzato per inserire contenuto modificabile nei campi di testo e password durante l'esecuzione del test. Questi campi vengono identificati utilizzando localizzatori come nome, classe, id, ecc. È un metodo disponibile sull'elemento web. A differenza del metodo type, il metodo sendkeys () non sostituisce il testo esistente in nessuna casella di testo.

Immissione di valori nelle caselle di immissione

Per inserire testo nei campi di testo e nei campi password, sendKeys () è il metodo disponibile su WebElement in Selenium.

Utilizzando lo stesso esempio del sito http://demo.guru99.com/test/login.html, ecco come troviamo il campo Testo e i campi Password e inseriamo il testo in Selenium.

  1. Trova il campo di testo "Indirizzo e-mail" utilizzando il localizzatore di ID.
  2. Trova il campo "Password" utilizzando il localizzatore di nomi
  3. Immettere il testo in "Indirizzo e-mail" utilizzando il metodo sendkeys Selenium.
  4. Immettere una password nel campo "Password" utilizzando il metodo sendKeys ().

Eliminazione dei valori nelle caselle di immissione

Il metodo clear () viene utilizzato per eliminare il testo in una casella di input. Questo metodo non necessita di un parametro . Lo snippet di codice di seguito cancellerà il testo dai campi Email o Password

Bottoni

È possibile accedere al pulsante di clic selenio utilizzando il metodo clic ().

Nell'esempio sopra

  1. Trova il pulsante per accedere
  2. Fare clic sul pulsante "Accedi" nella pagina di accesso del sito per accedere al sito.

Pulsanti di invio

I pulsanti di invio vengono utilizzati per inviare l'intero modulo al server. Possiamo utilizzare il metodo click () sull'elemento web come un normale pulsante come abbiamo fatto sopra o utilizzare il metodo submit () su qualsiasi elemento web nel modulo o sul pulsante di invio stesso.

Quando si utilizza submit (), WebDriver cercherà il DOM per sapere a quale modulo appartiene l'elemento, quindi attiverà la sua funzione di invio.

Codice completo

Ecco il codice funzionante completo

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;modulo di classe pubblica {public static void main (String [] args) {// dichiarazione e istanziazione di oggetti / variabiliSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nuovo ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Ottieni il WebElement corrispondente all'indirizzo e-mail (TextField)WebElement email = driver.findElement (By.id ("email"));// Ottieni il WebElement corrispondente al campo della passwordPassword WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo.");password.sendKeys ("abcdefghlkjl");System.out.println ("Campo di testo impostato");// Eliminazione dei valori nella casella di testoemail.clear ();password.clear ();System.out.println ("Campo di testo cancellato");// Trova il pulsante di invioWebElement login = driver.findElement (By.id ("SubmitLogin"));// Utilizzo del metodo clic per inviare il moduloemail.sendKeys (" Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Accesso eseguito con clic"); // utilizzando il metodo di invio per inviare il modulo. Invia utilizzato nel campo password driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Accesso eseguito con invio"); //driver.close (); }}

Risoluzione dei problemi

Se incontri NoSuchElementException () durante la ricerca di elementi, significa che l'elemento non si trova nella pagina nel punto in cui il driver Web ha avuto accesso alla pagina.

  1. Controlla di nuovo il tuo localizzatore utilizzando Firepath o Inspect Element in Chrome.
  2. Controlla se il valore che hai usato nel codice è diverso da quello dell'elemento in Firepath ora.
  3. Alcune proprietà sono dinamiche per pochi elementi. Nel caso in cui trovi che il valore è diverso e cambia dinamicamente, considera l'utilizzo di By.xpath () o By.cssSelector () che sono modi più affidabili ma complessi.
  4. A volte, potrebbe anche essere un problema di attesa, ovvero il driver Web ha eseguito il codice anche prima che la pagina si caricasse completamente, ecc.
  5. Aggiungi un'attesa prima di findElement () usando attese implicite o esplicite.

Sommario

  • La tabella seguente riassume i comandi per accedere a ciascun tipo di elemento discusso in precedenza
Elemento Comando Descrizione
Casella di input sendKeys () utilizzato per immettere valori nelle caselle di testo
chiaro() utilizzato per cancellare le caselle di testo dal valore corrente
Collegamenti clic() utilizzato per fare clic sul collegamento e attendere il completamento del caricamento della pagina prima di procedere al comando successivo.
Pulsante Invia Invia()
  • WebDriver consente la selezione di più di un'opzione in un elemento SELECT multiplo.
  • Puoi usare il metodo submit () su qualsiasi elemento all'interno del form. WebDriver attiverà automaticamente la funzione di invio del modulo a cui appartiene l'elemento.