Skip to content

Commit 67efa02

Browse files
committed
Update lesson Handle Table
1 parent b5e206f commit 67efa02

File tree

5 files changed

+322
-43
lines changed

5 files changed

+322
-43
lines changed

reports/extentreport/extentreport.html

Lines changed: 129 additions & 43 deletions
Large diffs are not rendered by default.

src/test/java/anhtester/com/listeners/TestListener.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public void onFinish(ITestContext result) {
3838
@Override
3939
public void onTestStart(ITestResult result) {
4040
LogUtils.info("Running test case " + result.getName());
41+
//Record video
42+
CaptureHelper.startRecord(result.getName());
4143

4244
//Bắt đầu ghi 1 TCs mới vào Extent Report
4345
ExtentTestManager.saveToReport(getTestName(result), getTestDescription(result));
@@ -46,6 +48,8 @@ public void onTestStart(ITestResult result) {
4648
@Override
4749
public void onTestSuccess(ITestResult result) {
4850
LogUtils.info("Test case " + result.getName() + " is passed.");
51+
//Stop record video
52+
CaptureHelper.stopRecord();
4953

5054
//Extent Report
5155
ExtentTestManager.logMessage(Status.PASS, result.getName() + " is passed.");
@@ -58,6 +62,9 @@ public void onTestFailure(ITestResult result) {
5862
CaptureHelper.captureScreenshot(result.getName());
5963
LogUtils.error(result.getThrowable().toString());
6064

65+
//Stop record video
66+
CaptureHelper.stopRecord();
67+
6168
//Extent Report
6269
ExtentTestManager.addScreenShot(result.getName());
6370
ExtentTestManager.logMessage(Status.FAIL, result.getThrowable().toString());
@@ -73,6 +80,9 @@ public void onTestSkipped(ITestResult result) {
7380
LogUtils.error("Test case " + result.getName() + " is skipped.");
7481
LogUtils.error(result.getThrowable().toString());
7582

83+
//Stop record video
84+
CaptureHelper.stopRecord();
85+
7686
//Extent Report
7787
ExtentTestManager.logMessage(Status.SKIP, result.getThrowable().toString());
7888
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package anhtester.com.pages.rise;
2+
3+
import anhtester.com.drivers.DriverManager;
4+
import org.openqa.selenium.By;
5+
import org.openqa.selenium.JavascriptExecutor;
6+
import org.openqa.selenium.Keys;
7+
import org.openqa.selenium.WebElement;
8+
import org.testng.Assert;
9+
10+
import java.util.List;
11+
12+
import static anhtester.com.keywords.WebUI.*;
13+
14+
public class ClientPage {
15+
//Login object
16+
private By buttonSignin = By.xpath("//button[normalize-space()='Sign in']"); //
17+
18+
//Dashboard object
19+
private By menuClient = By.xpath("//span[normalize-space()='Clients']");
20+
21+
//Client object
22+
private By tabClients = By.xpath("//a[contains(text(),'Clients')]");
23+
private By dropdownClientGroup = By.xpath("//div[@id='client-table_filter']/following-sibling::div[2]");
24+
private By inputSearch = By.xpath("//div[@id='select2-drop']//div[@class='select2-search']//input");
25+
26+
public void loginRiseCRM() {
27+
openURL("https://rise.fairsketch.com/signin");
28+
clickElement(buttonSignin);
29+
}
30+
31+
public void openClientPage() {
32+
clickElement(menuClient);
33+
clickElement(tabClients);
34+
}
35+
36+
public void filterClientGroup(String value) {
37+
clickElement(dropdownClientGroup);
38+
setText(inputSearch, value);
39+
getWebElement(inputSearch).sendKeys(Keys.ENTER);
40+
}
41+
42+
public void checkSearchTableByColumn(int column, String value) {
43+
filterClientGroup(value);
44+
waitForPageLoaded();
45+
sleep(2);
46+
47+
//Xác định số dòng của table sau khi search
48+
List<WebElement> row = DriverManager.getDriver().findElements(By.xpath("//table//tbody/tr"));
49+
int rowTotal = row.size(); //Lấy ra số dòng
50+
System.out.println("Số dòng tìm thấy: " + rowTotal);
51+
52+
//Duyệt từng dòng
53+
for (int i = 1; i <= rowTotal; i++) {
54+
WebElement elementCheck = DriverManager.getDriver().findElement(By.xpath("//table//tbody/tr[" + i + "]/td[" + column + "]"));
55+
56+
JavascriptExecutor js = (JavascriptExecutor) DriverManager.getDriver();
57+
js.executeScript("arguments[0].scrollIntoView(true);", elementCheck);
58+
59+
System.out.print(value + " - ");
60+
System.out.println(elementCheck.getText());
61+
Assert.assertTrue(elementCheck.getText().toUpperCase().contains(value.toUpperCase()), "Dòng số " + i + " không chứa giá trị tìm kiếm.");
62+
}
63+
64+
}
65+
66+
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package anhtester.com.testcases.rise;
2+
3+
import anhtester.com.common.BaseTest;
4+
import anhtester.com.drivers.DriverManager;
5+
import anhtester.com.keywords.WebUI;
6+
import anhtester.com.pages.rise.ClientPage;
7+
import org.openqa.selenium.By;
8+
import org.openqa.selenium.JavascriptExecutor;
9+
import org.openqa.selenium.WebElement;
10+
import org.openqa.selenium.support.ui.Select;
11+
import org.testng.Assert;
12+
import org.testng.annotations.Test;
13+
14+
import java.util.ArrayList;
15+
import java.util.List;
16+
17+
public class HandleFilterDatatable extends BaseTest {
18+
19+
ClientPage clientPage;
20+
21+
@Test
22+
public void testHandleCheckDatatable(){
23+
clientPage = new ClientPage();
24+
clientPage.loginRiseCRM();
25+
clientPage.openClientPage();
26+
clientPage.checkSearchTableByColumn(4, "Gold");
27+
}
28+
29+
public void checkSearchTableByColumn(int column, String value) {
30+
WebUI.waitForPageLoaded();
31+
WebUI.sleep(2);
32+
//Xác định số dòng của table sau khi search
33+
List<WebElement> row = DriverManager.getDriver().findElements(By.xpath("//table[@id='example']//tbody//tr"));
34+
int rowTotal = row.size(); //Lấy ra số dòng
35+
System.out.println("Số dòng tìm thấy: " + rowTotal);
36+
//Duyệt từng dòng
37+
for (int i = 1; i <= rowTotal; i++) {
38+
WebElement elementCheck = WebUI.getWebElement(By.xpath("//table[@id='example']//tbody/tr[" + i + "]/td[" + column + "]"));
39+
40+
JavascriptExecutor js = (JavascriptExecutor) DriverManager.getDriver();
41+
js.executeScript("arguments[0].scrollIntoView(false);", elementCheck);
42+
43+
System.out.print(value + " - ");
44+
System.out.println(elementCheck.getText());
45+
Assert.assertEquals(elementCheck.getText(), value, "Dòng số " + i + " không chứa giá trị tìm kiếm.");
46+
}
47+
}
48+
49+
50+
@Test
51+
public void testCheckPaginationOnTable() {
52+
53+
WebUI.openURL("https://datatables.net/");
54+
55+
//Data search read from Properties
56+
String searchValue = "London";
57+
58+
//Get item on One Page
59+
Select select = new Select(WebUI.getWebElement(By.xpath("//select[@name='example_length']")));
60+
61+
System.out.println(select.getFirstSelectedOption().getText());
62+
63+
int itemTotalOnePage = Integer.parseInt(select.getFirstSelectedOption().getText());
64+
System.out.println("Tổng số item / trang: " + itemTotalOnePage);
65+
66+
//Set Text on Search input
67+
WebUI.setText(By.xpath("//input[@type='search']"), searchValue);
68+
69+
//Get total item
70+
String strTotal = WebUI.getTextElement(By.xpath("//div[@id='example_info']"));
71+
ArrayList<String> list = new ArrayList<String>();
72+
73+
for (String strItem : strTotal.split("\\s")) {
74+
list.add(strItem);
75+
}
76+
77+
System.out.println(list);
78+
79+
int itemTotal = Integer.parseInt(list.get(5));
80+
System.out.println("Tổng số item: " + itemTotal);
81+
int pageTotal = itemTotal / itemTotalOnePage;
82+
int sodu = itemTotal % itemTotalOnePage;
83+
System.out.println("Tổng số nguyên: " + pageTotal);
84+
System.out.println("Tổng số dư: " + sodu);
85+
86+
if (sodu > 0) {
87+
pageTotal = pageTotal + 1;
88+
}
89+
90+
System.out.println("Tổng số Page: " + pageTotal);
91+
92+
for (int i = 1; i <= pageTotal; i++) {
93+
94+
checkSearchTableByColumn(3, searchValue);
95+
96+
//Nhấn nút Next để đến trang tiếp theo
97+
if (i < pageTotal) {
98+
WebUI.clickElement(By.xpath("//a[@id='example_next']"));
99+
}
100+
}
101+
102+
}
103+
104+
}

suites/SuiteHandleTable.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
2+
3+
<suite name="Suite Handle Table" verbose="1">
4+
5+
<test name="Handle Table">
6+
<parameter name="browser" value="chrome"/>
7+
<classes>
8+
<class name="anhtester.com.testcases.rise.HandleFilterDatatable">
9+
</class>
10+
</classes>
11+
</test>
12+
13+
</suite>

0 commit comments

Comments
 (0)