¿Cómo seleccionar el último elemento en Selenium Webdriver usando Javascript?

Aug 31 2020

Creo un script para verificar que un elemento se haya agregado correctamente. El elemento agregado siempre al final de la página o se convierte en el último elemento en un div diferente. Estoy usando selenium webdriver y javascript. Aquí está el código 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>

Intenté esto

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)

Pero tengo un error element.last() is not function

¿Alguien puede ayudarme? No puedo encontrar referencias sobre selenium webdriver en javascript, la mayoría de ellas usan java. ss

Respuestas

DebanjanB Aug 31 2020 at 13:25

A medida que el elemento añadido siempre se convierte en el último elemento para verificar el elemento adicional que necesita para localizar el last-childdel elemento padre , que no nos han mostrado en el HTML dentro de la cuestión. Entonces, para ubicar el last-child, puede usar la siguiente estrategia de localización basada en selectores css :

  • Usando css :

    let new_entity = await driver.findElement(By.css("immediateParentTag div:last-child > div.form-group.col-sm-2.col-xs-12 > input"))
    
issuesolverin Aug 31 2020 at 12:43

Aquí, cuando desee utilizar el último o el primer elemento, tenemos que obtener una matriz de elementos. En lugar de findElement, podemos usar findElements

let new_entity = await driver.findElements(By.css("..")).last();

let entity_value = await new_entity.getAttribute ('valor'); esperar (valor_entidad) .to.be.eq (nombre_entidad);