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");