Skip to content

Commit

Permalink
Update lesson 21 Thuc hanh POM part 2
Browse files Browse the repository at this point in the history
  • Loading branch information
anhtester committed Feb 1, 2023
1 parent 8d3ec99 commit a7c02d0
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/test/java/anhtester/com/pages/DashboardPage.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package anhtester.com.pages;

import anhtester.com.keywords.WebUI;
import anhtester.com.testcases.DashboardTest;
import anhtester.com.pages.customers.CustomersPage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package anhtester.com.pages;
package anhtester.com.pages.customers;

import anhtester.com.keywords.WebUI;
import org.openqa.selenium.By;
Expand All @@ -10,13 +10,13 @@ public class AddNewCustomerPage {
private String PAGE_URL = "https://crm.anhtester.com/admin/clients/client";
private String PAGE_TEXT = "Customer Details";

private By tabCustomerDetail = By.xpath("//a[@aria-controls='contact_info']");
private By company = By.xpath("//input[@id='company']");
private By vat = By.xpath("//input[@id='vat']");
private By phoneNumber = By.xpath("//input[@id='phonenumber']");
private By website = By.xpath("//input[@id='website']");
private By dropdownGroups = By.xpath("//label[@for='groups_in[]']/following-sibling::div");
private By inputGroups = By.xpath("//label[@for='groups_in[]']/following-sibling::div//input[@type='search']");
public By tabCustomerDetail = By.xpath("//a[@aria-controls='contact_info']");
public By company = By.xpath("//input[@id='company']");
public By vat = By.xpath("//input[@id='vat']");
public By phoneNumber = By.xpath("//input[@id='phonenumber']");
public By website = By.xpath("//input[@id='website']");
public By dropdownGroups = By.xpath("//label[@for='groups_in[]']/following-sibling::div");
public By inputGroups = By.xpath("//label[@for='groups_in[]']/following-sibling::div//input[@type='search']");
private By currency = By.xpath("//button[@data-id='default_currency']");
private By language = By.xpath("//button[@data-id='default_language']");
private By address = By.xpath("//textarea[@id='address']");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package anhtester.com.pages.customers;

import anhtester.com.keywords.WebUI;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;

public class CustomerDetailPage extends AddNewCustomerPage {

//Object in Customer Detail page
//Không phải khai báo lại Object vì đã kế thừa từ AddNewCustomerPage
//Không bị duplicated
//Tiết kiệm thời gian
//Lỡ có thay đổi thì chỉ cần sửa ở 1 nơi => AddNewCustomerPage

private WebDriver driver;

public CustomerDetailPage(WebDriver _driver) {
super(_driver);
driver = _driver;
}

public void checkCustomerDetail(String customerName) {
WebUI.waitForPageLoaded(driver);
System.out.println(driver.findElement(company).getAttribute("value"));
System.out.println(driver.findElement(vat).getAttribute("value"));
System.out.println(driver.findElement(phoneNumber).getAttribute("value"));

//Kiểm tra thì phải dùng Assert
//Phải dùng Equals chứ không nên dùng Contains vì giá trị phải đúng chính xác
Assert.assertEquals(driver.findElement(company).getAttribute("value"), customerName, "Company Name not match.");
Assert.assertEquals(driver.findElement(vat).getAttribute("value"), "10", "VAT not match.");
Assert.assertEquals(driver.findElement(phoneNumber).getAttribute("value"), "0123456789", "Phone Number not match.");

}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package anhtester.com.pages;
package anhtester.com.pages.customers;

import anhtester.com.keywords.WebUI;
import org.openqa.selenium.By;
Expand All @@ -16,6 +16,7 @@ public class CustomersPage {
private By buttonImportCustomer = By.xpath("//a[normalize-space()='Import Customers']");
private By buttonContacts = By.xpath("//div[@class='_buttons']//a[normalize-space()='Contacts']");
private By inputSearch = By.xpath("//div[@id='DataTables_Table_0_filter']//input");
private By tdCustomerName = By.xpath("//table[@id='DataTables_Table_0']//tbody/tr[1]/td[3]/a");

//Hàm xây dựng
private WebDriver driver;
Expand All @@ -38,5 +39,20 @@ public AddNewCustomerPage clickNewCustomerButton(){
return new AddNewCustomerPage(driver);
}

public void searchCustomer(String companyName){
WebUI.waitForPageLoaded(driver);
WebUI.waitForElementVisible(driver, inputSearch, 10);
driver.findElement(inputSearch).sendKeys(companyName);
WebUI.sleep(2);
}

public CustomerDetailPage clickOnFirstRowCustomerName(){
WebUI.waitForPageLoaded(driver);
WebUI.waitForElementVisible(driver, tdCustomerName, 10);
driver.findElement(tdCustomerName).click();

return new CustomerDetailPage(driver);
}


}
20 changes: 17 additions & 3 deletions src/test/java/anhtester/com/testcases/CustomersTest.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package anhtester.com.testcases;

import anhtester.com.common.BaseTest;
import anhtester.com.pages.AddNewCustomerPage;
import anhtester.com.pages.CustomersPage;
import anhtester.com.pages.customers.AddNewCustomerPage;
import anhtester.com.pages.customers.CustomerDetailPage;
import anhtester.com.pages.customers.CustomersPage;
import anhtester.com.pages.DashboardPage;
import anhtester.com.pages.LoginPage;
import org.testng.annotations.Test;
Expand All @@ -13,18 +14,31 @@ public class CustomersTest extends BaseTest {
DashboardPage dashboardPage;
CustomersPage customersPage;
AddNewCustomerPage addCustomerPage;
CustomerDetailPage customerDetailPage;

@Test
public void testAddNewCustomer(){
loginPage = new LoginPage(driver);
dashboardPage = loginPage.login("admin@example.com", "123456");
customersPage = dashboardPage.openCustomerPage();

//Kiểm tra trang Customer Page load được hay chưa và đúng hay chưa
customersPage.verifyCustomersPage();
//Click vào nút New Customer
addCustomerPage = customersPage.clickNewCustomerButton();

//Addison, Joseph, Adorno, Theodor, Keiko, Bailey, Philip James
addCustomerPage.AddDataNewCustomer("Creighton");
String CUSTOMER_NAME = "Adorno";
addCustomerPage.AddDataNewCustomer(CUSTOMER_NAME);

//Mở lại trang Customer
dashboardPage.openCustomerPage();
//Search giá trị Customer vừa Add
customersPage.searchCustomer(CUSTOMER_NAME);
//Click vào giá trị Customer Name dòng đầu tiên
customerDetailPage = customersPage.clickOnFirstRowCustomerName();
//Check Customer Detail
customerDetailPage.checkCustomerDetail("Theodor");
}

}
4 changes: 1 addition & 3 deletions src/test/java/anhtester/com/testcases/DashboardTest.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package anhtester.com.testcases;

import anhtester.com.common.BaseTest;
import anhtester.com.pages.CustomersPage;
import anhtester.com.pages.customers.CustomersPage;
import anhtester.com.pages.DashboardPage;
import anhtester.com.pages.LoginPage;
import org.openqa.selenium.By;
import org.testng.Assert;
import org.testng.annotations.Test;

public class DashboardTest extends BaseTest {
Expand Down

0 comments on commit a7c02d0

Please sign in to comment.