Topic Học Kiểm thử phần mềm tự động sẽ giới thiệu về Selenium Webdriver
Bài 4 -Selenium WebDriver Switch Window CommandsMột số ứng dụng web có nhiều frames hoặc nhiều cưả sổ (multiple windows ).
Vậy làm sao để Selenium Webdriver phân biệt được chúng.?
Selenium WebDriver gán id ccho mỗi cửa sổ ngay sau khi các đối tượng WebDriver được khởi tạo. Id này được gọi là cửa sổ xử lý.
Selenium sử dụng id duy nhất này để chuyển đổi kiểm soát trong nhiều cửa sổ. Trong thuật ngữ đơn giản, mỗi cửa sổ độc đáo có một ID duy nhất, do đó Selenium có thể phân biệt khi nó được chuyển sang điều khiển từ một cửa sổ khác.
Sau đây là một số lệnh
1.GetWindowHandle Command
Lấy -nhận diện id cửa sổ xử lý (window handle)của cửa sổ hiện hành.
String handle= driver.getWindowHandle();//Return a string of alphanumeric window handle
|
2. GetWindowHandles Command
Lấy tất cả các cửa sổ xử lý (window handle)của cửa sổ hiện hành
Set<String> handle= driver.getWindowHandles();//Return a set of window handle
|
3.SwitchTo Window Command
Di chuyển giữa các cửa sổ khác nhau thông qua tên của chúng . bằng cách sử dụng “switchTo” method
driver.switchTo().window("windowName");
|
Ngoài ra, có thể đến cửa sổ khác bằng cách sử dụng “switchTo().window()” method
Nó có thể lặp qua mỗi cửa sổ khác đang mở giống việc ta chuyển t từ cửa sổ này sang cửa sổ khác vậy
for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);}
|
Hoặc lặp lại (mở lại) tất cả các cửa sổ
driver.findElement(By.id(“id of the link which opens new window”)).click();
//Chờ đến khi 2 cửa sổ không được mở
waitForNumberofWindowsToEqual(2);// phương thức đợi mở
Set handles = driver.getWindowHandles();
firstWinHandle = driver.getWindowHandle(); handles.remove(firstWinHandle);
String winHandle=handles.iterator().next();
if (winHandle!=firstWinHandle){
/ Nhận diện cửa sổ xử lý thứ 2 ( window handle)
secondWinHandle=winHandle; //Gán cửa sổ thứ 2 để xử lý
//Switch control to new window
driver.switchTo().window(secondWinHandle);
|
4.SwitchTo Frame Command
Di chuyển giữa các Frame
driver.switchTo().frame("frameName");
|
5.SwitchTo PopUp Command
WebDriver hỗ trợ di chuyển giữa các Popup bằng cách sử dụng phương pthức "switchTo". Sau khi một cửa sổ bật lên, có thể truy cập vào các alert và nó sẽ trả về đối tượng alert hiện đang mở. có thể lựa chọn accept, dismiss, read …. hoặc bất kỳ trên Popup
Alert alert = driver.switchTo().alert();
|
Sau đây là bài tập thực hành cho Bài 4 trong topic " Học kiểm thử phần mềm tự động"
1) Launch new Browser
2) Open URL “http://kiemthuphanmemvvn.blogspot.com/2015/03/hoc-kiem-thu-tu-dong.html”
3) Get Window name (Use GetWindowHandle command)
package practice HocKiemthutudong;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PracticeSwitchWindow {
public static WebDriver driver;
public static void main(String[] args) {
// Create a new instance of the Firefox driver
driver = new FirefoxDriver();
// Put an Implicit wait, this means that any search for elements on the page could take the time the implicit wait is set for before throwing exception
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
// Launch the URL
driver.get("http://kiemthuphanmemvvn.blogspot.com/2015/03/hoc-kiem-thu-tu-dong.html");
// Store and Print the name of the First window on the console
String handle= driver.getWindowHandle();
System.out.println(handle);
// Close Original window
driver.quit();
}
}
|
Chọn Run và xem kết quả
-----------