Javascript kullanarak Selenium Webdriver'da son eleman nasıl seçilir?
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
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"))
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ı);