Come selezionare l'ultimo elemento in Selenium Webdriver usando Javascript?
Creo uno script per verificare che un elemento sia stato aggiunto con successo. L'elemento aggiunto sempre alla fine della pagina o diventa l'ultimo elemento in div differenti. Sto usando selenio webdriver e javascript. Ecco il codice HTML
<div class="row">
<div class="form-group col-sm-2 col-xs-12">
<label>Entity Name</label>
<input value="ttax" class="form-control entity-name" disabled="">
</div>
</div>
<div class="row">
<div class="form-group col-sm-2 col-xs-12">
<label>Entity Name</label>
<input value="Room" class="form-control entity-name" disabled="">
</div>
</div>
Ho provato questo
let new_entity = await driver.findElement(By.css("div:nth-child(2) > div.form-group.col-sm-2.col-xs-12 > input").last()
let entity_value = await new_entity.getAttribute('value')
expect(entity_value).to.be.eq(entity_name)
Ma ho ricevuto un errore element.last() is not function
Qualcuno può aiutarmi? Non riesco a trovare riferimenti sul webdriver selenio in javascript, la maggior parte dei quali utilizza java. ss
Risposte
Come l'elemento aggiunto diventa sempre l'ultimo elemento per verificare l'elemento aggiunto è necessario individuare l' last-childdel elemento genitore , che non ci avete mostrato nel codice HTML all'interno della domanda. Quindi per individuare last-childè possibile utilizzare la seguente strategia di localizzazione basata sui selettori CSS :
Utilizzando css :
let new_entity = await driver.findElement(By.css("immediateParentTag div:last-child > div.form-group.col-sm-2.col-xs-12 > input"))
Qui, quando vuoi usare l'ultimo o il primo elemento, dobbiamo ottenere un array di elementi. Invece di findElement, possiamo usare findElements
let new_entity = await driver.findElements(By.css("..")).last();
let entity_value = await new_entity.getAttribute ('value'); aspettarsi (entity_value) .to.be.eq (entity_name);