<Selenium> Chương 5: Tìm kiếm phần tử (tiếp)
Tìm kiếm phần tử trên trang bằng ClassName Giờ ta sẽ cùng xem cách sử dụng ClassName thế nào nhé. Phương thức trông thế này: findElementsByClass(String using); Biến using sẽ lấy ID của phần tử mà bạn đang muốn tìm kiếm. Nó sẽ trả về 1 đối tượng WebElement mà bạn có thế dùng để làm việc sau ...
Tìm kiếm phần tử trên trang bằng ClassName
Giờ ta sẽ cùng xem cách sử dụng ClassName thế nào nhé. Phương thức trông thế này: findElementsByClass(String using); Biến using sẽ lấy ID của phần tử mà bạn đang muốn tìm kiếm. Nó sẽ trả về 1 đối tượng WebElement mà bạn có thế dùng để làm việc sau này.
Thời điểm hành động – sử dụng findElementsByClassName()
Ta sẽ tiến hành tìm 1 phần tử trên trang bằng cách sử dụng phương thức findElementByClassName() có trong các class Browser Driver. findElement sẽ trả về đối tượng WebElement. Làm theo các bước bên dưới để xem nó làm việc thế nào nhé. 1, Mở Java IDE. Intellij hoặc Eclipse là những cái phổ biến nhất mà bạn có thể sử dụng 2. Sử dụng lệnh:
List<WebElement> elements = ((FindsByClassName)driver) .findElementsByClassName("storetext"); Assert.equals(1, elements.size());
- Chạy test từ IDE. Kết quả sẽ trông giống hình chụp bên dưới:
Điều gì vừa xảy ra?
Ta vừa thấy cách tìm kiếm 1 phần tử bằng cách sử dụng phương thức giúp đỡ ***findElementsByClassName***. Sauk hi chạy test, kết quả chỉ ra là Passed. Không giống với phiên bản singular của nó, sẽ không ném ra ***NoSuchElementException*** nếu không tìm thấy phần tử nào. Nó sẽ trả về 1 danh sách có size = 0 . Nếu muốn sử dụng các CSS selector, bạn có thể sử dụng ***findElementByCssSelector*** hoặc ***findElementsByCssSelector***. Ở phần sau ta sẽ tìm hiểu về Xpaths.
Tìm kiếm phần tử trên trang bằng XPath
XPath là một trong những lối vào hữu hiệu nhất trong việc tìm kiếm phần tử trên trang. Trước đây nó có chút vấn đề về tốc độ tìm kiếm phần tử trên trang. Ta đã học rất nhiều kĩ thuật khác nhau sử dụng XPath trong sách này. Phương thức trông sẽ giống như bên dưới: ***findElementByXpath(String using)***; Biến using lấy ID của phần tử mà bạn muốn tìm kiếm. Nó sẽ trả về đối tượng WebElement mà bạn có thể làm việc cùng.
Thời điểm hành động – sử dụng findElementByXPath()
Ta sẽ đi tìm kiếm 1 phần tử trên trang bằng cách sử dụng phương thức findElementByXPath() trong mọi Browser Driver class. findElement sẽ trả về 1 đối tượng WebElement. Hãy làm theo các bước sau để xem nó làm việc thế nào nhé.
- Mở Java IDE. Intellij hoặc Eclipse
- Sử dụng lệnh bên dưới:
WebElement element = ((FindsByXPath)driver). findElementByXpath("verifybutton");
- Chạy test từ IDE. Nó trông giống hình chụp bên dưới:
Điều gì vừa xảy ra?
Ta vừa xem cách tìm kiếm 1 phần tử bằng việc sử dụng phương thức hỗ trợ findElementByXPath. Sau khi chạy test, ta thấy kết quả là passed có nghĩa rằng XPath có làm việc. Nếu không có phần tử nào tìm thấy trong Selenium, WebDriver sẽ ném ra ngoại lệ NotSuchElementFound.
Tìm kiếm phần tử trên trang bằng XPath
Giờ ta sẽ xem cách sử dụng thế nào nhé. Phương thức sẽ trông như sau: findElementsByXpath(String using); Biến using lấy ID của phần tử mà bạn muốn tìm. Nó sẽ trả về đối tượng WebElement mà bạn có thể sử dụng sau này.
Thời điểm hành động – sử dụng findElementsByXpath()
Chúng ta sẽ đi tìm phần tử trên trang bằng cách sử dụng phương thức findElementsByXPath() có trong mỗi Browser Driver class. findElement sẽ trả về 1 đối tượng WebElement. Hãy làm theo các bước bên dưới để xem nó làm việc thế nào nhé.
- Mở Java IDE.Intellij hoặc Eclipse
- Sử dụng câu lệnh:
List<WebElement> elements = ((FindsByXPath)driver). findElementsByXpath("//input"); Assert.equals(5, elements.size());
- Chạy test từ IDE. Kết quả sẽ giống với ảnh chụp bên dưới:
Điều gì vừa xảy ra?
Chúng ta vừa thấy cách tìm kiếm 1 phần tử bằng cách sử dụng phương thức trợ giúp findElementsByXPath. Sauk hi chạy test, ta thấy kết quả Pass .Không giống với singular version, nó sẽ không ném ngoại lệ NoSuchElement nếu phần tử không được tìm thấy. Nó sẽ trả về danh sách có size = 0.
Tìm kiếm 1 phần tử trên trang bằng link text của nó
Nếu bạn cần tìm kiếm 1 liên kết bằng text trong nó thì phương pháp này khá hữu ích. Đây là 1 phương pháp hỗ trợ cài đặt 1 đối số cho findElement. Ta hãy cùng xem cách sử dụng nó nhé. Phương thức trông như sau: findElementByLinkText(String using); Biến using lấy link text của phần tử mà bạn đang muốn tìm kiếm. Nó sẽ trả về đối tượng WebElement mà sau này bạn có thể làm việc cùng.
Thời điểm hành động – sử dụng findElementByLinkText()
Ta sẽ đi tìm kiếm phần tử trên trang bằng cách sử dụng phương thức findElementByLinkText() có trên các Browser Driver class. findElement sẽ trả về đối tượng WebElement mà ta có thể thao tác với nó. Hãy làm theo các bước bên dưới để xem nó làm việc thế nào nhé.
- Mở Java IDE. Intellij hoặc Eclipse
- Ta sẽ sử dụng câu lệnh bên dưới. Trong ví dụ này, ta sử dụng 1 trang khác trên site.
Driver.get("http://book.theautomatedtester.co.uk") WebElement element = ((FindsByLinkText)driver). findElementByLinkText("Chapter1");
- Chạy test từ IDE. Kết quả như hình chụp bên dưới:
Điều gì vừa xảy ra?
Ta vừa thấy cách tìm kiếm 1 phần tử sử dụng phương thức hỗ trợ findElementByLinkText. Một điều cần biết rằng việc tìm kiếm cho text là case sensitive(nhạy loại chữ) khi sử dụng trong WebDriver. Điều này có nghĩa WebDriver cần khớp chính xác hoặc nó sẽ không tìm thấy phần tử của bạn. Nếu phần tử không được tìm thấy trong Selenium, WebDriver sẽ ném ra 1 ngoại lệ NoSuchElementFound.
Tìm kiếm nhiều phần tử trên trang bằng link text
Giờ ta sẽ cùng xem cách tìm kiếm nhiều phần tử trên trang bằng link text nhé. Cú pháp là: findElementsByLinkText(String using); Biến using sẽ lấy link text của phần tử mà bạn muốn tìm. Nó sẽ trả về 1 đối tượng là WebElement mà sau này ta có thể làm việc cùng.
Thời điểm hành động – sử dụng findElementsByLinkText()
Giờ ta sẽ đi tìm 1 phần tử trên trang sử dụng phương thức findElementsByLinkText() có trên các Browser Driver class. findElements sẽ trả về 1 danh sách các đối tượng WebElement mà ta có thể thao tác trên nó. Hãy làm theo các bước sau để xem nó làm việc thế nào nhé.
- Mở Java IDe. Intellij hoặc Eclipse
- Sử dụng lệnh bên dưới
driver.get("http://book.theautomatedtester.co.uk") List<WebElement> elements = ((FindsByLinkText)driver). findElementsByLinkText("Chapter1"); Assert.equals(1, elements.size());
- Chạy test từ IDE. Kết quả sẽ trông giống với hình chụp dưới đây: Image 5
Điều gì vừa xảy ra?
Ta vừa thấy cách tìm kiếm 1 phần tử bằng cách sử dụng phương thức hỗ trợ findElementsByLinkText. Nếu phần tử không được tìm thấy trong Selenium, WebDriver sẽ trả về danh sách rỗng
Pop quiz – Tìm kiếm nhiều phần tử
- Chọn đáp án đúng nhất cho việc tìm kiếm nhiều phần tử sử dụng XPath? a. findElementByXpath b. findElementsByXPath c. findElementByCssSelector
- Chọn đáp án đúng nhất cho 1 phần tử sử dụng CSS selectors để tìm kiếm 1 phần tử chỉ trên tên class? a. findElementById b. findElementsByCssSelector c. findElementByClassName
- findElements sẽ ném ra NoSuchElementException khi nó không tìm ra phần tử?
Nguồn dịch Sách Selenium 2 Testing Tools- Beginner's Guide [eBook] - David Burns