More

    8 cách tìm kiếm và tương tác với Element trong Selenium

    Tìm kiếm và tương tác với các element là một phần quan trọng trong automation test. Selenium  có nhiều ưu điểm như hỗ trợ nhiều loại ngôn ngữ và nhiều trình duyệt khác nhau. Mặc dù Selenium vẫn còn một số giới hạn nhất định nhưng vẫn là một testing framework tốt để sử dụng. Trong bài viết này, mình sẽ viết về các cách tìm kiếm và tương tác với element trong selenium webdriver.

    Locator trong Selenium là gì? 

    Hãy lấy một ví dụ đơn giản. Khi bạn muốn tìm kiếm thông tin về từ khóa “selenium” trên trang google.com

    Bạn cần phải mở trình duyệt google.com, sau đó chỉ chuột vào đúng vị trí thanh search và điền từ khóa “selenium”, rồi ấn vào nút search để hiển thị ra kết quả.

    Cũng tương tự như vậy, khi bạn viết script cho automation test là việc bạn mô phỏng lại các bước tương tác với trình duyệt. Làm như thế nào để bạn tìm kiếm và tương tác đúng vị trí thanh search vài tìm đúng vị trí của nút tìm kiếm? Việc xác định này gọi là Locator trong Selenium.

    Như đã nói ở trên, việc xác định đúng các GUI element ở một trang web là điều kiện tiên quyết để viết được script cho automation test. Locator là nơi các chưa các components giúp Selenium script xác định các WebElement (Ví dụ như textbox, button, …) hiển thị trên trang web. 

    Những Locator nào có trong Selenium?

    Có nhiều loại kỹ thuật tìm kiếm locator khác nhau có thể thử dụng để xác định một phần thử duy nhất ở Webpage.

    Hình ảnh biểu diễn một vài các locator Selenium hỗ trợ

    Để truy cập locator, Selenium sử dụng class “By” để cung cấp một số các phương thức (method) xác định khác nhau: tag, class, id, link, css, name, Xpath, partialLinkText.

    sử dụng locator để tìm web element với Selenium

    1. ID attribute

    Đây là kỹ thuật tìm kiếm đơn giản nhất để xác định vị trí của một element. Theo W3C, ID luôn là duy nhất cho một web element. ID là một trong những cách nhanh nhất và duy nhất để xác định web element, cũng được coi là một trong những phương pháp tin cậy.

    Về mặt lý thuyết, mọi phần tử trên một trang phải có một ID duy nhất. Tuy nhiên, trong cuộc sống thực, người ta không thường quan sát thấy điều này. Hầu hết các phần tử có thể không có ID hoặc có thể gặp hai phần tử có cùng ID. Trong những trường hợp như vậy, người ta cần sử dụng một chiến lược khác để xác định duy nhất một phần tử DOM.

    By.id(“firstName”);

    2.ClassName

    ClassName cho phép Selenium tìm dựa vào giá trị class của DOM (Document Object Model)

    Lưu ý khi sử dụng ClassName:

    • Những thẻ sử dụng chung một style sẽ được cho thành className của css, nên một ClassName sẽ được sử dụng ở nhiều nơi. Do đó, khi sử dụng ClassName để locate sẽ tìm ra nhiều phần tử, không unique, khó xác định.
    •  Hiện nay, một số trang web có classname tự generate và không có quá nhiều ý nghĩa. 

    By.className(“practice-form-wrapper”);

    3. Name

    Tương tự như locate element bằng ID, Selenium cung cấp cho người dùng cách xác định phần tử bằng cách sử dụng thuộc tính name. Tuy nhiên, một nhược điểm là một website có thể có nhiều phần tử có cùng thuộc tính name.

    Lưu ý: Nếu nhiều phần tử có cùng giá trị name attribute thì Selenium sẽ chỉ chọn các giá trị đầu tiên trong trang phù hợp với tiêu chí tìm kiếm. Vậy chỉ nên sử dụng name để locate element khi đảm bảo được rằng giá trị của thuộc tính name là duy nhất

    Ví dụ trong ảnh: By.name(“a”);

    4. Xpath

    Đường dẫn Xpath giống như một chiếc bản đồ, chỉ cho bạn đến vị trí bạn muốn đến, chỉ cho bạn đến element mà bạn muốn xác định. Xpath được sử dụng nhiều trong việc định vị các phần tử động trên trang web.

    XPath được định nghĩa là đường dẫn XML

    //tag_name[@attribute_value]

    5. partialLinkText và linkText

    LinkText và partialLinkText đều khá giống nhau về chức năng và cách locate web element. Cả hai đều locate bằng cách sử dụng hyperlink.

    Tuy nhiên, chỉ có thể sử dụng cho những element có chứa <a> tag.

    Tương tự, nếu như có nhiều hyperlink có cùng nội dung hiển thị, Selenium sẽ luôn chọn element đầu tiên được tìm thấy.

    By.linkText(“Home”);

    6. tagName

    Loại locator này sử dụng tag name để xác định element ở web page. 

    Tag name là các thẻ của HTML ví dụ như: button, input, div…

    By.tagName(“a”);

    tagName locator sẽ trả về tất cả các element từ trang web có chứa thẻ được định vị

    Tuy nhiên, nếu chỉ sử dụng tagName thì rất khó để xác định một phần thử bởi vì tagName được sử dụng rất nhiều lần trong cùng 1 trang web.

    7. cssSelector

    CSS (Cascading Style Sheet) được sử dụng khi thêm style cho trang web. 

    Trong trường hợp khá khó khăn khi sử dụng ID, name và class để locate element.

    Nguồn tham khảo: Locators in Selenium : How to Locate Elements | BrowserStack

    Recent Articles

    Related Stories

    BÌNH LUẬN

    Vui lòng nhập bình luận của bạn
    Vui lòng nhập tên của bạn ở đây