Javascript kullanarak Selenium Webdriver'da son eleman nasıl seçilir?

Aug 31 2020

Bir elemanın başarıyla eklendiğini doğrulamak için bir komut dosyası oluşturuyorum. Eklenen öğe her zaman sayfanın sonunda veya farklı div öğesinin son öğesi olur. Selenium webdriver ve javascript kullanıyorum. İşte HTML kodu

<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>

Bunu denedim

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)

Ama hata aldım element.last() is not function

Biri bana yardım edebilir mi? Selenium webdriver ile ilgili referansları javascript'te bulamıyorum, çoğu java kullanıyor. ss

Yanıtlar

DebanjanB Aug 31 2020 at 13:25

Eklenen öğe her zaman eklenen öğeyi doğrulamak için son öğe olduğu için last-child, bize soru içindeki HTML'de göstermediğiniz ana öğenin yerini belirlemeniz gerekir . Bu yüzden, bulmak için last-childaşağıdaki css seçici tabanlı Konum Belirleme Stratejisini kullanabilirsiniz :

  • Css kullanarak :

    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

Burada son veya ilk elemanı kullanmak istediğinizde, bir eleman dizisi elde etmeliyiz. FindElement yerine findElements kullanabiliriz

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

let entity_value = new_entity.getAttribute ('değer'); bekle (varlık_değer) .to.be.eq (varlık_adı);