Untitled
unknown
abap
3 years ago
7.8 kB
9
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...