Làm cách nào để chọn phần tử cuối cùng trong Selenium Webdriver bằng Javascript?

Aug 31 2020

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

DebanjanB Aug 31 2020 at 13:25

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"))
    
issuesolverin Aug 31 2020 at 12:43

Ở đâ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ể);