SF

""

Sử dụng các hàm cơ bản của WebDriver

 Sử dụng  các hàm cơ bản của WebDriver

[Selenium Java]  Lesson 7: Sử dụng các hàm cơ bản của WebDriver | Anh Tester


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();
Java
 

Basic Browser Operations

Các thao tác trình duyệt cơ bản

// Navigate to a page
driver.navigate().to("http://google.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();
Java

 

Advanced Browser Operations

Các thao tác trình duyệt nâng cao
String handle = driver.getWindowHandle();
Java
  • 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.
Ví dụ: Click vào 1 đường link ở page hiện tại, nó open 1 browser mới. Mỗi browser này sẽ có 1 mã số để phân biệt chúng với nhau.


Set<String> allWindows = driver.getWindowHandles();
Java
  • 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);
}
Java

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]);
Java
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);
Java


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();
Java

 

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();
Java

Wait Configurations

Các thao tác tùy chỉnh thời gian chờ

// Đặ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);
Java