Jak wybrać ostatni element w Selenium Webdriver używając Javascript?

Aug 31 2020

Tworzę skrypt, aby sprawdzić, czy element został pomyślnie dodany. Dodawany element zawsze znajduje się na końcu strony lub staje się ostatnim elementem w innym div. Używam webdrivera selenu i javascript. Oto kod 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>

Próbowałem tego

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)

Ale mam błąd element.last() is not function

Czy ktoś może mi pomóc? Nie mogę znaleźć odniesień do webdrivera selenu w javascript, większość z nich używa java. ss

Odpowiedzi

DebanjanB Aug 31 2020 at 13:25

Jak dodał elementem zawsze staje ostatni element do zweryfikowania dodanego elementu trzeba zlokalizować last-childz elementu nadrzędnego , które nie zostały pokazane nam w HTML w pytaniu. Aby zlokalizować last-child, możesz użyć następującej strategii lokalizacji opartej na selektorach CSS :

  • Korzystanie z 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

Tutaj, gdy chcesz użyć ostatniego lub pierwszego elementu, musimy pobrać tablicę elementów. Zamiast findElement możemy użyć findElements

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

let entity_value = await new_entity.getAttribute ('value'); oczekiwać (wartość_jednostki) .to.be.eq (nazwa_jednostki);