Как выбрать последний элемент в Selenium Webdriver с помощью Javascript?

Aug 31 2020

Я создаю сценарий, чтобы убедиться, что элемент успешно добавлен. Добавленный элемент всегда в конце страницы или становится последним элементом в другом div. Я использую selenium webdriver и javascript. Вот 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>

Я пробовал это

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)

Но у меня ошибка element.last() is not function

Может кто-нибудь мне помочь? Я не могу найти ссылок на selenium webdriver в javascript, большинство из них используют java. сс

Ответы

DebanjanB Aug 31 2020 at 13:25

По мере того как дополнительный элемент всегда становится последним элементом , чтобы проверить добавленный элемент , который нужно найти last-childв родительский элемент , который вы не показан нам в HTML в вопросе. Итак, чтобы найти, last-childвы можете использовать следующую стратегию локатора на основе CSS-селекторов :

  • Используя 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

Здесь, когда вы хотите использовать последний или первый элемент, нам нужно получить массив элементов. Вместо findElement мы можем использовать findElements

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

пусть entity_value = ждать new_entity.getAttribute ('значение'); ожидать (entity_value) .to.be.eq (entity_name);