Authencation Alert
unknown
plain_text
a year ago
6.4 kB
12
Indexable
Never
package webdriver; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; 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_12_Handle_Alert { WebDriver driver; String projectPath = System.getProperty("user.dir"); String osName = System.getProperty("osName"); Alert alert ; String firefoxAuthenAutoIT = projectPath + "\\autoITScripts\\" + "authen_firefox.exe"; String chormeAuthenAutoIT = projectPath + "\\autoITScripts\\" + "authen_chrome.exe"; @BeforeClass public void beforeClass() { System.setProperty("webdriver.gecko.driver", projectPath + "\\browserDrivers\\geckodriver.exe"); driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.manage().window().maximize(); } public void TC_01_Acept_Alert() { driver.get("https://automationfc.github.io/basic-form/index.html"); sleepInsecond(1); driver.findElement(By.xpath("//button[text()='Click for JS Alert']")).click(); //Switch to Alert (Khi alert đang xuất hiện alert= driver.switchTo().alert(); sleepInsecond(1); //Verify Alert title trước khi accept Assert.assertEquals(alert.getText(),"I am a JS Alert"); //Accept 1 alert alert.accept(); sleepInsecond(1); //Verify Accept alert thành công Assert.assertEquals(driver.findElement(By.cssSelector("p#result")).getText(), "You clicked an alert successfully"); } public void TC_02_Confirm_Alert(){ driver.get("https://automationfc.github.io/basic-form/index.html"); sleepInsecond(1); driver.findElement(By.xpath("//button[text()='Click for JS Confirm']")).click(); alert = driver.switchTo().alert(); sleepInsecond(1); Assert.assertEquals(alert.getText(), "I am a JS Confirm"); //Cancle 1 alert alert.dismiss(); sleepInsecond(1); Assert.assertEquals(driver.findElement(By.cssSelector("p#result")).getText(), "You clicked: Cancel"); } public void TC_03_Prompt_Alert(){ driver.get("https://automationfc.github.io/basic-form/index.html"); sleepInsecond(1); String keyword = "Tran Thuong"; driver.findElement(By.xpath("//button[text()='Click for JS Prompt']")).click(); alert = driver.switchTo().alert(); Assert.assertEquals(alert.getText(),"I am a JS prompt"); alert.sendKeys(keyword); alert.accept(); sleepInsecond(1); Assert.assertEquals(driver.findElement(By.cssSelector("p#result")).getText(), "You entered: "+ keyword); } public void TC_04_Accept_Alert_Login_Guru99(){ driver.get("https://demo.guru99.com/V1/index.php"); sleepInsecond(1); driver.findElement(By.xpath("//input[@type='submit']")).click(); sleepInsecond(1); alert = driver.switchTo().alert(); Assert.assertEquals(alert.getText(), "User is not valid"); alert.accept(); sleepInsecond(3); driver.getCurrentUrl(); Assert.assertEquals(driver.getCurrentUrl(), "https://demo.guru99.com/V1/index.php"); } public void TC_05_Authencation_Alert_Tructiep(){ //Paste hẳn Username/ password vào URL trước khi nó ra //URL: http://the-internet.herokuapp.com/basic_auth //Username/password: admin/admin //http://admin/admin@the-internet.herokuapp.com/basic_auth driver.get("http://admin:admin@the-internet.herokuapp.com/basic_auth"); sleepInsecond(1); Assert.assertTrue(driver.findElement(By.cssSelector("div.example>p")).getText().contains("Congratulations! You must have the proper credentials.")); } //Trường hợp này dùng khi mình đang ở site A rồi click vào button để chuyển sang trang B //ở trag B Bắt mình nhập username và pass //--> Cách xử lý: tại màn hình A lấy URL của button--> Nhập User/Pass vào sau đó với get ra để vào màn hình B public void TC_06_Authencation_Alert_getlink() { driver.get("http://the-internet.herokuapp.com/"); sleepInsecond(1); String basicAuthenURL = driver.findElement(By.xpath("//a[text()='Basic Auth']")).getAttribute("href"); System.out.println(basicAuthenURL); driver.get(getAuthenticationURL(basicAuthenURL, "admin", "admin")); sleepInsecond(5); Assert.assertTrue(driver.findElement(By.cssSelector("div.example>p")).getText().contains("Congratulations! You must have the proper credentials.")); } //Case ngoại lệ: Có 1 số trag đặc biệt k work với cách truyền Usernam/pass //Bắt buộc nhập //--> Cách xử lý: Dùng AutoIT (CHỉ support cho win, k hỗ trợ MAc và Linux) // Nhập trực tiếp User/pass: Nhập user xong tab để chuyển qua pass @Test public void TC_07_Authencation_Alert_AutoIT() throws IOException { //Bật scrips của AutoIT trước khi mở site chứa Authencaution Alert //Câu lệnh thực thi 1 file exe trong code java dùng hàm Runtime //Hàm Runtime này trong trường hợp k tì thấy file thì sẽ thrown ra exception nó sẽ chờ if (driver.toString().contains("firefox")) { Runtime.getRuntime().exec(new String[]{ firefoxAuthenAutoIT , "admin" , "admin" }); } else { Runtime.getRuntime().exec(new String[]{ chormeAuthenAutoIT , "admin" , "admin" }); driver.get("http://the-internet.herokuapp.com/basic_auth"); sleepInsecond(5); Assert.assertTrue(driver.findElement(By.cssSelector("div.example>p")).getText().contains("Congratulations! You must have the proper credentials.")); } } public String getAuthenticationURL(String basicAuthenURL, String username, String password ) { String[] authenURLArray = basicAuthenURL.split("//"); basicAuthenURL= authenURLArray[0] + "//" + username+ ":" + password + "@" + authenURLArray[1]; System.out.println(basicAuthenURL); return basicAuthenURL; } @AfterClass public void afterClass() { driver.quit(); } // Sleep cứng (Static wait}admin admin public void sleepInsecond(long timeInsecond) { try { Thread.sleep(timeInsecond *1000); } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } }