Wie wähle ich das letzte Element in Selenium Webdriver mit Javascript aus?
Ich erstelle ein Skript, um zu überprüfen, ob ein Element erfolgreich hinzugefügt wurde. Das hinzugefügte Element steht immer am Ende der Seite oder wird letztes Element in einem anderen Div. Ich benutze Selen Webdriver und Javascript. Hier ist HTML-Code
<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>
Ich habe es versucht
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)
Aber ich habe einen Fehler bekommen element.last() is not function
Kann mir jemand helfen? Ich kann in Javascript keine Referenzen zu Selenium Webdriver finden, die meisten verwenden Java. ss
Antworten
Da das hinzugefügte Element immer das letzte Element ist, das das hinzugefügte Element überprüft, müssen Sie last-childdas übergeordnete Element suchen, das Sie uns im HTML-Code in der Frage nicht angezeigt haben. Um das zu finden last-child, können Sie die folgende auf CSS-Selektoren basierende Locator-Strategie verwenden :
Verwenden von CSS :
let new_entity = await driver.findElement(By.css("immediateParentTag div:last-child > div.form-group.col-sm-2.col-xs-12 > input"))
Wenn Sie hier das letzte oder erste Element verwenden möchten, müssen Sie ein Elementarray abrufen. Anstelle von findElement können wir findElements verwenden
let new_entity = await driver.findElements(By.css("..")).last();
let entity_value = warte auf new_entity.getAttribute ('value'); erwarten (Entitätswert) .to.be.eq (Entitätsname);