Untitled
unknown
abap
2 years ago
7.8 kB
5
Indexable
package webdriver; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; 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_09_Button_Radio_Thaontp { WebDriver driver; String projectPath = System.getProperty("user.dir"); String osName = System.getProperty("os.name"); JavascriptExecutor jsExecutor; @BeforeClass public void beforeClass() { if (osName.startsWith("WINDOWS")) { System.setProperty("webdriver.gecko.driver", projectPath + "\\browserDrivers\\geckodriver.exe\""); } else { System.setProperty("webdriver.gecko.driver", projectPath + "/browserDrivers/geckodriver"); } // Set môi trg WINDOW // System.setProperty("webdriver.gecko.driver", projectPath + // "\\browserDrivers\\geckodriver.exe"); // Set môi trường MAC // System.setProperty("webdriver.gecko.driver", "/browserDrivers/geckodriver"); // Khởi tạo browser lên driver = new FirefoxDriver(); // Ép kiểu tường minh jsExecutor = (JavascriptExecutor) driver; // Set thời gian chờ để tìm được element driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); driver.manage().window().maximize(); } public void TC_01_Button() { driver.get("https://www.fahasa.com/customer/account/create"); // Navigate qua tag đăng nhập driver.findElement(By.cssSelector("li.popup-login-tab-login")).click(); // Verify button " Đăng nhập" is Disable By loginButtonBy = By.cssSelector("button.fhs-btn-login"); Assert.assertFalse(driver.findElement(loginButtonBy).isEnabled()); // Verify button Đăng nhập có bakcground màu xám String loginButtonBackgroundColorRgb = driver.findElement(loginButtonBy).getCssValue("background-color"); System.out.println("RGB color = " + loginButtonBackgroundColorRgb); // Convert qua mã Hexa // String loginButtonBackgroundColorHexa = // Color.fromString(loginButtonBackgroundColor).asHex(); // System.out.println("Hexa color = " + loginButtonBackgroundColorHexa); // Assert.assertEquals(loginButtonBackgroundColorHexa.toUpperCase(), // "#636363;"); // Input dữ liệu hợp lệ vào Email/ Password driver.findElement(By.cssSelector("input#login_username")).sendKeys("Automation@gmail.com"); driver.findElement(By.cssSelector("input#login_password")).sendKeys("123456789"); // Verify button đăng nhập là enable Assert.assertTrue(driver.findElement(loginButtonBy).isEnabled()); // Verify button đăng nhập có background màu đỏ String loginButtonBackgroundColor = driver.findElement(loginButtonBy).getCssValue("background-color"); System.out.println("RGB color = " + loginButtonBackgroundColor); // Tải lại trang driver.navigate().refresh(); driver.findElement(By.cssSelector("li.popup-login-tab-login")).click(); // Remove thông tin user và pass để test TH text yêu cầu nhập là trg bắt buộc jsExecutor.executeScript("arguments[0].removeAttribute('disable');", driver.findElement(loginButtonBy)); driver.findElement(loginButtonBy).click(); } public void TC_02_RadioButton() { driver.get("https://demos.telerik.com/kendo-ui/radiobutton/index"); // Click Dual-zone air conditioning // Khai báo biến - Kiếm tra xem được chọn chưa By onePetrolRadio = By.xpath("//label[text()='1.8 Petrol, 118kW']/preceding-sibling::input"); Assert.assertFalse(driver.findElement(onePetrolRadio).isSelected()); driver.findElement(onePetrolRadio).click(); sleepInSecond(2); Assert.assertTrue(driver.findElement(onePetrolRadio).isSelected()); } public void TC_03_Default_Checkbox() { driver.get("https://demos.telerik.com/kendo-ui/checkbox/index"); // Click button 2 Petro By luggageCheckbox = By.xpath("//label[text()='Luggage compartment cover']/preceding-sibling::input"); By heatedCheckbox = By.xpath("//label[text()='Heated front and rear seats']/preceding-sibling::input"); By leatherCheckbox = By.xpath("//label[text()='Leather trim']/preceding-sibling::input"); By towbarCheckbox = By.xpath("//label[text()='Towbar preparation']/preceding-sibling::input"); // Select ( Phải kiểm tra dkien trc khi click chọn) checkToCheckbox(luggageCheckbox); checkToCheckbox(heatedCheckbox); // Assert xem được chọn rồi hay chưa? Assert.assertTrue(driver.findElement(luggageCheckbox).isSelected()); Assert.assertTrue(driver.findElement(heatedCheckbox).isSelected()); Assert.assertTrue(driver.findElement(leatherCheckbox).isSelected()); // Disable Assert.assertFalse(driver.findElement(towbarCheckbox).isEnabled()); Assert.assertFalse(driver.findElement(leatherCheckbox).isEnabled()); // De-select uncheckToCheckbox(luggageCheckbox); uncheckToCheckbox(heatedCheckbox); // Verify de-selected Assert.assertFalse(driver.findElement(luggageCheckbox).isSelected()); Assert.assertFalse(driver.findElement(heatedCheckbox).isSelected()); Assert.assertFalse(driver.findElement(towbarCheckbox).isSelected()); } @Test public void TC_04_Multiple_Fields() { driver.get("https://automationfc.github.io/multiple-fields/"); List<WebElement> checkboxes = driver.findElements(By.cssSelector("input[type='checkbox']")); System.out.println("Checkbox size = " + checkboxes.size()); // Action - Selected for (WebElement checkbox : checkboxes) { if (!checkbox.isSelected()) checkbox.click(); sleepInMiliSecond(500); } // Verify - Selected for (WebElement checkbox : checkboxes) { Assert.assertTrue(checkbox.isSelected()); } // Action - Deselected for (WebElement checkbox : checkboxes) { if (checkbox.isSelected()) { checkbox.click(); sleepInMiliSecond(500); } } // Verify - Deslected for (WebElement checkbox : checkboxes) { Assert.assertFalse(checkbox.isSelected()); } } public void checkToCheckbox(By by) { if (!driver.findElement(by).isSelected()) { driver.findElement(by).click(); } } public void uncheckToCheckbox(By by) { if (driver.findElement(by).isSelected()) { driver.findElement(by).click(); } } @Test public void TC_05_Custom_Radio() { driver.get("https://material.angular.io/components/radio/examples"); By winterCheckboxInpput = By.cssSelector("input[value='Winter']"); // Click button Summer có 3 case // Case 1 : Dùng thẻ input --> Not click // isSelected --> Work // Case 2 : Dùng thẻ span // Selenium click(); --> Work // isSelected --> Không Work // Case 3 : Dùng thẻ span để click // Dùng input để assert verify ( Work nhưng sẽ không tối ưu) // Vậy nên sẽ dùng javaScript để verify clickByJavaScript(winterCheckboxInpput); sleepInSecond(2); Assert.assertTrue(driver.findElement(winterCheckboxInpput).isSelected()); } public void clickByJavaScript(By by) { jsExecutor.executeScript("arguments[0].click();", driver.findElement(by)); } @AfterClass public void afterClass() { driver.quit(); } public void sleepInSecond(long second) { try { Thread.sleep(second * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } public void sleepInMiliSecond(long milisecond) { try { Thread.sleep(milisecond); } catch (InterruptedException e) { e.printStackTrace(); } } }
Editor is loading...