Elemento Web in Selenium: TestoBox, Pulsante, sendkeys(), clic()
Elemento Web in Selenium
I moduli sono gli elementi web fondamentali per ricevere informazioni dai visitatori del sito web. I moduli web hanno diversi elementi GUI come caselle di testo, campi password, caselle di controllo, pulsanti di scelta, menu a discesa, input di file, ecc.
Vedremo come accedere a questi diversi elementi del modulo utilizzando Selenium Driver Web con Java. Selenium incapsula ogni elemento del modulo come oggetto di WebElement. Fornisce un'API per trovare gli elementi ed eseguire azioni su di essi, come l'inserimento di testo nelle caselle di testo, il clic sui pulsanti, ecc. Vedremo i metodi disponibili per accedere a ciascun elemento del modulo.
Introduzione a WebElement, findElement(), findElements()
Selenium Web Driver incapsula un elemento del modulo semplice come oggetto di Elemento Web.
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, nome tag, selettori CSS, testo del collegamento, ecc.
Web Driver fornisce i due metodi WebElement seguenti per trovare gli elementi.
- trovaElemento() – trova un singolo elemento web e restituisce come WebElement Selenium oggetto.
- trovaElementi() – restituisce un elenco di oggetti WebElement che corrispondono ai criteri di localizzazione.
Vediamo gli snippet 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.
Passo 1) Dobbiamo importare questo pacchetto per creare oggetti di Web Elements
Passo 2) Dobbiamo chiamare il metodo findElement() disponibile sulla classe WebDriver e ottenere un oggetto di WebElement.
Fare riferimento di seguito per vedere come è fatto.
Selenium Testo di input
Le caselle di input fanno riferimento a uno di questi due tipi:
- Campi di testo- Selenium caselle di testo di input che accettano valori digitati e li mostrano così come sono.
- Campi password– caselle di testo che accettano valori digitati ma li mascherano come una serie di caratteri speciali (solitamente punti e asterischi) per evitare che vengano visualizzati valori sensibili.
localizzatori
Il metodo findElement() accetta un parametro che è un localizzatore dell'elemento. Diversi localizzatori come By.id(), By.name(), By.xpath(), By.CSSSelector() ecc. individuano gli elementi nella pagina utilizzando le loro proprietà come “““ id, nome o percorso, ecc.
Puoi utilizzare plugin come Fire path per ottenere aiuto nell'ottenere l'id, xpath, ecc. degli elementi.
Utilizzando il sito di esempio https://demo.guru99.com/test/login.html di seguito è riportato il codice per individuare il campo di testo "Indirizzo e-mail" utilizzando il localizzatore ID e il campo "Password" utilizzando il localizzatore nome.
- Il campo di testo dell'email si trova in ID
- Il campo Password si trova in base al nome
invia le chiavi in Selenium
sendkeys() in Selenium è un metodo utilizzato per immettere contenuto modificabile nei campi testo e password durante l'esecuzione del test. Questi campi sono identificati tramite 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.
Come inserire il testo Selenium
Per inserire testo nei campi testo e nei campi password, sendKeys() è il metodo disponibile su WebElement in Selenium.
Usando lo stesso esempio di https://demo.guru99.com/test/login.html sito, ecco come troviamo il campo Testo e i campi Password e inseriamo il testo Selenium.
- Trova il campo di testo "Indirizzo e-mail" utilizzando il localizzatore ID.
- Trova il campo "Password" utilizzando il localizzatore di nomi
- Inserisci il testo nell'"Indirizzo e-mail" utilizzando Selenium metodo sendkeys.
- Inserisci una password nel campo "Password" utilizzando il metodo sendKeys().
Eliminazione di valori in input Boxes
Il chiaro() Il metodo viene utilizzato per eliminare il testo in una casella di input. Questo metodo non necessita di parametriIl frammento di codice seguente cancellerà il testo dai campi Email o Password
Selenium Fare clic su Pulsanti
Il Selenium È possibile accedere al pulsante di clic utilizzando il metodo click().
Nell'esempio sopra
- Trova il pulsante per accedere
- Fare clic sul pulsante "Accedi" nella pagina di accesso del sito per accedere al sito.
Selenium Pulsanti Invia
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 oppure utilizzare il metodo send() su qualsiasi elemento web nel modulo o sul pulsante di invio stesso.
Quando viene utilizzato send(), WebDriver cercherà il DOM per sapere a quale modulo appartiene l'elemento e quindi attiverà la sua funzione di invio.
Codice completo
Ecco il codice completo di funzionamento
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.*; public class Form { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String baseUrl = "https://demo.guru99.com/test/login.html"; driver.get(baseUrl); // Get the WebElement corresponding to the Email Address(TextField) WebElement email = driver.findElement(By.id("email")); // Get the WebElement corresponding to the Password Field WebElement password = driver.findElement(By.name("passwd")); email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); System.out.println("Text Field Set"); // Deleting values in the text box email.clear(); password.clear(); System.out.println("Text Field Cleared"); // Find the submit button WebElement login = driver.findElement(By.id("SubmitLogin")); // Using click method to submit form email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); login.click(); System.out.println("Login Done with Click"); //using submit method to submit the form. Submit used on password field driver.get(baseUrl); driver.findElement(By.id("email")).sendKeys("abcd@gmail.com"); driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl"); driver.findElement(By.id("SubmitLogin")).submit(); System.out.println("Login Done with Submit"); //driver.close(); } }
Troubleshooting
Se incontri NoSuchElementException() durante la ricerca di elementi, significa che l'elemento non è stato trovato nella pagina nel punto in cui il driver Web ha effettuato l'accesso alla pagina.
- Controlla di nuovo il tuo localizzatore utilizzando Firepath o Ispeziona Elemento in Chrome.
- Controlla ora se il valore che hai utilizzato nel codice è diverso da quello dell'elemento in Firepath.
- Alcune proprietà sono dinamiche per pochi elementi. Nel caso in cui scoprissi che il valore è diverso e cambia dinamicamente, considera di usare By.xpath() o By.cssSelector() che sono metodi più affidabili ma complessi.
- A volte potrebbe trattarsi anche di un problema di attesa, ad esempio il driver Web ha eseguito il codice anche prima che la pagina fosse caricata completamente, ecc.
- Aggiungi un'attesa prima di findElement() utilizzando attese implicite o esplicite.
Sommario
- La tabella seguente riassume i comandi per accedere a ciascuna tipologia di elemento discusso sopra
elemento | Comando | Descrizione |
---|---|---|
Ingresso Box | sendKeys () | utilizzato per immettere valori nelle caselle di testo |
chiaro() | utilizzato per cancellare il valore corrente dalle caselle di testo | |
Collegamenti | clic() | utilizzato per fare clic sul collegamento e attendere il completamento del caricamento della pagina prima di procedere al comando successivo. |
Invia Button | invia() |
- WebDriver consente la selezione di più di un'opzione in un elemento SELECT multiplo.
- Puoi utilizzare il metodo send() su qualsiasi elemento all'interno del modulo. WebDriver attiverà automaticamente la funzione di invio del modulo a cui appartiene quell'elemento.