Selenio - Localizzatori

L'individuazione degli elementi in Selenium WebDriver viene eseguita con l'aiuto dei metodi findElement () e findElements () forniti da WebDriver e dalla classe WebElement.

  • findElement () restituisce un oggetto WebElement in base a un criterio di ricerca specificato o finisce per generare un'eccezione se non trova alcun elemento corrispondente ai criteri di ricerca.

  • findElements () restituisce un elenco di WebElements che corrispondono ai criteri di ricerca. Se non vengono trovati elementi, restituisce un elenco vuoto.

La seguente tabella elenca tutta la sintassi Java per l'individuazione degli elementi in Selenium WebDriver.

Metodo Sintassi Descrizione
Per ID driver.findElement (By.id (<ID elemento>)) Individua un elemento utilizzando l'attributo ID
Per nome driver.findElement (By.name (<nome elemento>)) Individua un elemento utilizzando l'attributo Name
Per nome della classe driver.findElement (By.className (<element class>)) Individua un elemento utilizzando l'attributo Class
Per nome del tag driver.findElement (By.tagName (<htmltagname>)) Individua un elemento utilizzando il tag HTML
Tramite testo del collegamento driver.findElement (By.linkText (<linktext>)) Individua un collegamento utilizzando il testo del collegamento
Dal testo del collegamento parziale driver.findElement (By.partialLinkText (<linktext>)) Individua un collegamento utilizzando il testo parziale del collegamento
Di CSS driver.findElement (By.cssSelector (<css selector>)) Individua un elemento utilizzando il selettore CSS
Di XPath driver.findElement (By.xpath (<xpath>)) Individua un elemento utilizzando la query XPath

Utilizzo dei localizzatori

Ora comprendiamo l'uso pratico di ciascuno dei metodi di localizzazione con l'aiuto di https://www.calculator.net

Per ID

Qui si accede a un oggetto con l'aiuto degli ID. In questo caso, è l'ID della casella di testo. I valori vengono inseriti nella casella di testo utilizzando il metodo sendkeys con l'aiuto di ID (cdensity).

driver.findElement(By.id("cdensity")).sendKeys("10");

Per nome

Qui si accede a un oggetto con l'aiuto dei nomi. In questo caso, è il nome della casella di testo. I valori vengono inseriti nella casella di testo utilizzando il metodo sendkeys con l'aiuto di ID (cdensity).

driver.findElement(By.name("cdensity")).sendKeys("10");

Per nome della classe

Qui si accede a un oggetto con l'aiuto dei nomi di classe. In questo caso, è il nome della classe di WebElement. È possibile accedere al valore con l'aiuto del metodo gettext.

List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));

Per nome tag

Il nome tag DOM di un elemento può essere utilizzato per individuare quel particolare elemento nel WebDriver. È molto facile gestire le tabelle con l'aiuto di questo metodo. Dai un'occhiata al seguente codice.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();

Per testo del collegamento

Questo metodo aiuta a individuare un elemento di collegamento con testo visibile corrispondente.

driver.findElements(By.linkText("Volume")).click();

Dal testo del collegamento parziale

Questo metodo consente di individuare un elemento di collegamento con testo visibile corrispondente parziale.

driver.findElement(By.partialLinkText("Volume")).click();

Di CSS

Il CSS viene utilizzato come metodo per identificare il webobject, tuttavia NON tutti i browser supportano l'identificazione CSS.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));

Di XPath

XPath è l'acronimo di XML path language. È un linguaggio di query per selezionare i nodi da un documento XML. XPath si basa sulla rappresentazione ad albero dei documenti XML e offre la possibilità di spostarsi all'interno dell'albero selezionando i nodi utilizzando una varietà di criteri.

driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");