Untitled
unknown
abap
7 months ago
6.2 kB
2
Indexable
Never
package webdriver; 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; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class Topic_14_Windows_Tab_Thaontp { WebDriver driver; String projectPath = System.getProperty("user.dir"); @BeforeClass public void beforeClass() { System.setProperty("webdriver.gecko.driver", projectPath + "\\browserDrivers\\geckodriver.exe"); // Khởi tạo browser lên driver = new FirefoxDriver(); // Set thời gian chờ để tìm được element driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.manage().window().maximize(); } public void TC_01_WindowTab_Dictionary() { // Home driver.get("https://dictionary.cambridge.org/vi/"); // Click đăng nhập link driver.findElement(By.xpath("//header[@id='header']//span[text()='Đăng nhập']")).click(); sleepInSecond(3); // Khi click business chuyển tab nhưng driver vẫn ở Homepage vì vậy cần Switch // Switch dùng title switchToWindowByTitle("Login"); // Click login Button driver.findElement(By.cssSelector("input[value='Log in']")).click(); Assert.assertEquals(driver.findElement(By.xpath("//form[@id='gigya-login-form']//input[@name='username']/following-sibling::span")).getText(), "This field is required"); Assert.assertEquals(driver.findElement(By.xpath("//form[@id='gigya-login-form']//input[@name='password']/following-sibling::span")).getText(), "This field is required"); driver.findElement(By.xpath("//form[@id='gigya-login-form']//input[@name='username']")).sendKeys("automationfc.com@gmail.com"); driver.findElement(By.xpath("//form[@id='gigya-login-form']//input[@name='password']")).sendKeys("Automation000***"); sleepInSecond(2); driver.findElement(By.cssSelector("input[value='Log in'")).click(); // Sau khi click Login nó tự close window đi và nhảy về trang trước đó ( Trang Home) // Driver vẫn ở trang Login // Phải Switch về trang Home switchToWindowByTitle("Cambridge Dictionary | Từ điển tiếng Anh, Bản dịch & Từ điển từ đồng nghĩa"); sleepInSecond(3); // Verify Login thành công Assert.assertEquals(driver.findElement(By.cssSelector("header#header span.cdo-username")).getText(), "Automation FC"); } @Test public void TC_02_Techpanda_Window() { driver.get("http://live.techpanda.org/"); // Click vào Mobile tab driver.findElement(By.cssSelector("li.nav-1>a")).click(); sleepInSecond(3); // Khi click bussiness chuyển tab rồi nhưng driver vẫn ở trang Home // Switch bằng Title , gọi hàm đã lưu ra switchToWindowByTitle("Mobile"); // Add sp Sony Xperia vào Add to Compare driver.findElement(By.xpath("//a[@title='Sony Xperia']/parent::h2/following-sibling::div/ul/li/a[@class='link-compare']")).click(); // Verify text hiển thị sau khi Add Assert.assertEquals(driver.findElement(By.cssSelector("ul.messages")).getText(), "The product Sony Xperia has been added to comparison list."); // Add Samsung Galaxy driver.findElement(By.xpath("//a[@title='Samsung Galaxy']/parent::h2/following-sibling::div/button/following-sibling::ul/li/a[@class='link-compare']")).click(); Assert.assertEquals(driver.findElement(By.cssSelector("li.success-msg")).getText(), "The product Samsung Galaxy has been added to comparison list."); // Click button Compare driver.findElement(By.xpath("//button[@title='Compare']")).click(); // Switch qua cửa sổ mới switchToWindowByTitle("Products Comparison List - Magento Commerce"); // Verify title Assert.assertEquals(driver.findElements(By.cssSelector("div.title-buttons>h1")), "Compare Products"); // Close tab và chuyển về ParentWindow driver.findElement(By.cssSelector("//button[@title='Close Window']")).click(); // Đang lỗi chỗ này còn 3step nữa chưa làm } public void TC_03_Naukri_Tab() { // Trang A driver.get("https://www.naukri.com/"); String homePageWwindowID = driver.getWindowHandle(); System.out.println("Tab A : " + homePageWwindowID); // Click vào Jobs link ( Trang B) driver.findElement(By.xpath("//a[@title='Search Jobs']")).click(); sleepInSecond(3); Set<String> allWindowIDs = driver.getWindowHandles(); // Hành vi tự nhảy qua trang Job nhưng driver vẫn ở trang A // Trong TH chỉ có duy nhất 2tab/ window thì có thể sự dụng ID của tab/window để Switch qua // Dùng 1 biến tạm để duyệt qua các phần tử trong Set<String> for (String id : allWindowIDs) { // Nếu ID nào khác với id của Homepage thì Switch qua if(!id.equals(homePageWwindowID)) { // Switch qua id của tab đó driver.switchTo().window(id); } } // Sau khi Switch qua System.out.println(driver.getCurrentUrl()); } // Viết hàm switch dùng title // Dùng được cho cả 2 tab/ window hoặc nhiều hơn 2 đều được public void switchToWindowByTitle(String expectTitle) { // Lấy hết tất cả ID đang có ra Set<String> allWindowIDs = driver.getWindowHandles(); // Dùng 1 biến tạm để duyệt qua các phần tử trong Set<String> for (String id : allWindowIDs) { // Switch vào trước rồi mới kiểm tra điều kiện sau] driver.switchTo().window(id); // Lấy title của page đó ra String actualTitle = driver.getTitle(); if (actualTitle.equals(expectTitle)) { // Thỏa mãn điều kiện là đúng cái page/tab mình cần thì dùng break break; } } } @AfterClass public void afterClass() { driver.quit(); } public void sleepInSecond(long second) { try { Thread.sleep(second * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } }