Định vị các phần tử trong Selenium WebDriver được thực hiện với sự trợ giúp của các phương thức findElement() và findElements() được cung cấp bởi lớp WebDriver và WebElement.
- findElement(): trả về một đối tượng WebElement
- findElements(): trả về một danh sách các đối tượng thuộc WebElement
Bảng sau liệt kê tất cả cú pháp Java để định vị một phần tử trong Selenium WebDriver.
| Phương thức | Cú pháp | Mô tả |
|---|---|---|
| Theo ID | driver.findElement(By.id (<element ID>)) | Định vị một phần tử bằng thuộc tính ID |
| Theo name | driver.findElement(By.name (<element name>)) | Định vị một phần tử bằng cách sử dụng thuộc tính Name |
| Theo class name | driver.findElement(By.className (<element class>)) | Định vị một phần tử bằng thuộc tính Class |
| Theo tag name | driver.findElement(By.tagName (<htmltagname>)) | Định vị một phần tử bằng cách sử dụng thẻ HTML |
| Bằng văn bản liên kết | driver.findElement(By.linkText (<linktext>)) | Tìm liên kết bằng văn bản liên kết |
| Bằng văn bản liên kết một phần | driver.findElement(By.partialLinkText (<linktext>)) | Định vị liên kết bằng văn bản một phần của liên kết |
| Theo CSS | driver.findElement(By.cssSelector (<css selector>)) | Định vị một phần tử bằng cách sử dụng bộ chọn CSS |
| Theo XPath | driver.findElement(By.xpath (<xpath>)) | Định vị một phần tử bằng cách sử dụng truy vấn XPath |
Hàm:
driver.findElements()
- Tìm kiếm tất cả các element mà match với điều kiện (tìm theo kiểu locator gì đó)
- Kiểu dữ liệu: java.util.List<WebElement>: nó sẽ return lại 1 list các giá trị loại WebElement.
- Có thể viết code như sau:
List<WebElement> options = driver.findElements(By.xpath("//option"));
Và vì đây là list nên để tương tác với từng element ở trong list thì chúng ta thường sẽ sử dụng vòng lặp.
Ví dụ:
- Chạy từ 0 đến bé hơn số lượng Element tìm được (vậy là tổng số lượng element chứ hả)
- In ra các giá trị Text của từng Element
for(int i=0; i<options.size(); i++){
System.out.println(options.get(i).getText());
}
Initialize
Các cách khởi tạo driver với các loại trình duyệt khác nhau và Import thư viện tương ứng
// Khởi tạo: selenium-chrome-driver
import org.openqa.selenium.chrome.ChromeDriver;
WebDriver driver = new ChromeDriver();
// Khởi tạo: selenium-firefox-driver
import org.openqa.selenium.firefox.FirefoxDriver;
WebDriver driver = new FirefoxDriver();
// Khởi tạo: selenium-edge-driver
import org.openqa.selenium.firefox.EdgeDriver;
WebDriver driver = new EdgeDriver();
// Khởi tạo: selenium-ie-driver
import org.openqa.selenium.ie.InternetExplorerDriver;
WebDriver driver = new InternetExplorerDriver();
// Khởi tạo: selenium-safari-driver
import org.openqa.selenium.safari.SafariDriver;
WebDriver driver = new SafariDriver();
Basic Browser Operations
// Navigate to a page
driver.navigate().to("http://anhtester.com");
// Điều hướng về lịch sử trang trước đó
driver.navigate().back();
// Làm mới trang hiện tại
driver.navigate().refresh();
// Điều hướng đến trang tiếp sau
driver.navigate().forward();
// Get the title of the page
String title = driver.getTitle();
// Get the current URL
String url = driver.getCurrentUrl();
// Get the current page HTML source
String html = driver.getPageSource();
Advanced Browser Operations
String handle = driver.getWindowHandle();
- Lấy cái “mã số” của cái browser đang run và nó sẽ return lại 1 giá trị kiểu String.
- Cái này thường được dùng khi xử lý những phần có nhiều browser.
Set<String> allWindows = driver.getWindowHandles();
- Lấy toàn bộ các “mã số” của các browser đang run mà có sử dụng instance driver. Ví dụ nếu 1 cái browser mở lên do mình tự mở, không phải Selenium mở thì sẽ ko lấy đc “mã số”.
- Type java.util.Set<java.lang.String>: nó sẽ return lại 1 Set các giá trị kiểu String, Set có ý nghĩa là sẽ không có dữ liệu bị lặp.
Set<String> handle= driver.getWindowHandles();
for (String handle : driver.getWindowHandles()){
driver.switchTo().window(handle);
}
Tương tự phần findElements(), để tương tác được với Set thì ta dùng vòng lặp.
Ví dụ:
Set<String> AllWindowHandles = driver.getWindowHandles();
String window1 = (String) AllWindowHandles.toArray()[0];
System.out.println("Window 1 handle code = "+AllWindowHandles.toArray()[0]);
String window2 = (String) AllWindowHandles.toArray()[1];
System.out.print("Window 2 handle code = "+AllWindowHandles.toArray()[1]);
Code ngắn gọn lại:// Switch between browser windows or tabs
Set<String> windowHandles = driver.getWindowHandles();
String firstTab = (String)windowHandles.toArray()[0]; //Tab đầu
String lastTab = (String)windowHandles.toArray()[1]; //Tab thứ hai
driver.switchTo().window(lastTab);
Các tùy chọn của interface Options
// Phóng hết cỡ trình duyệt theo màn hình máy tính
driver.manage().window().maximize();
// Add a new cookie
Cookie newCookie = new Cookie("customName", "customValue");
driver.manage().addCookie(newCookie);
// Get all cookies
Set<Cookie> cookies = driver.manage().getCookies();
// Delete a cookie by name
driver.manage().deleteCookieNamed("CookieName");
// Delete all cookies
driver.manage().deleteAllCookies();
Các tùy chọn của interface TargetLocator
//Ví dụ: Chuyển driver sang 1 phần tử ngoài page như: window khác, alert, iframe.
//Handle Alert
driver.switchTo().alert();
// Switch to Frame
driver.switchTo().frame(1);//Đến khung hiển thị đầu
driver.switchTo().frame("frameName");//Đến khung hiển thị theo tên
WebElement element = driver.findElement(By.id("id"));
driver.switchTo().frame(element); //Chuyển đến khung hiển thị chứa element có ID chỉ định
// Chuyển sang khung hiển thị trên trình duyệt hiện tại
driver.switchTo().defaultContent();
Wait Configurations
// Đặt thời gian chời ngầm định cho tất cả các element (đơn vị Giây)
// Ví dụ thiết lập 10 giây cho tất cả
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Thiết lập thời gian chờ Load page xong mới thao tác (tối đa 30s)
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
Trên đây là các lệnh cơ bản của WebDriver hỗ trợ trong Selenium Java.
Tìm hiểu thêm: Các lệnh truy vấn trong Selenium WebDriver Java





![[Selenium Java] Lesson 7: Sử dụng các hàm cơ bản của WebDriver | Anh Tester](https://mail.anhtester.com/storage/photos/shares/lesson/selenium_java/webdriver.png)