Làm cách nào để chọn phần tử cuối cùng trong Selenium Webdriver bằng Javascript?
Tôi tạo một tập lệnh để xác minh rằng một phần tử được thêm thành công. Phần tử được thêm luôn ở cuối trang hoặc trở thành phần tử cuối cùng trong các div khác nhau. Tôi đang sử dụng trình duyệt web selenium và javascript. Đây là mã 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>
Tôi đã thử cái này
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)
Nhưng tôi có lỗi element.last() is not function
Ai giúp tôi với? Tôi không thể tìm thấy tài liệu tham khảo về selenium webdriver bằng javascript, hầu hết chúng đều sử dụng java. ss
Trả lời
Vì phần tử được thêm vào luôn trở thành phần tử cuối cùng để xác minh phần tử được thêm vào, bạn cần xác định vị trí last-childcủa phần tử mẹ mà bạn chưa hiển thị cho chúng tôi trong HTML trong câu hỏi. Vì vậy, để xác định vị trí, last-childbạn có thể sử dụng Chiến lược định vị dựa trên css-selectors sau:
Sử dụng css :
let new_entity = await driver.findElement(By.css("immediateParentTag div:last-child > div.form-group.col-sm-2.col-xs-12 > input"))
Ở đây khi bạn muốn sử dụng phần tử cuối cùng hoặc phần tử đầu tiên thì chúng ta phải lấy một mảng phần tử. Thay vì findElement, chúng ta có thể sử dụng findElements
let new_entity = await driver.findElements(By.css("..")).last();
let entity_value = await new_entity.getAttribute ('value'); mong đợi (giá trị thực thể) .to.be.eq (tên_thực thể);