Skip to content

Commit

Permalink
서명 완료, 서명 대기중 예외처리
Browse files Browse the repository at this point in the history
  • Loading branch information
johnny committed Mar 31, 2023
1 parent 0c53ae8 commit e1e4b7b
Show file tree
Hide file tree
Showing 19 changed files with 790 additions and 119 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,25 @@ public ContractSetup_Step1page(WebDriver driver) {

// 서명자 1
// 첫번째 서명자 이메일/카카오톡 초기화 = x 버튼
// 가끔 못 찾는 경우가 있어서 예외 처리 해둠

// 예외처리도 피해가면 아래 코드 사용 예정
// wait.until(ExpectedConditions.presenceOfElementLocated(By.id("테이블")));

@FindBy(xpath = ("//button[@aria-label='clear']"))
WebElement Signatory_1_email_del_btn;

public void Signatory_1_email_del_btn() throws InterruptedException {
Wait.until(ExpectedConditions.visibilityOf(Signatory_1_email_del_btn)).click();

for(int i=0; i<=2;i++){
try{
Wait.until(ExpectedConditions.visibilityOf(Signatory_1_email_del_btn)).click();
break;
}
catch(Exception e){
System.out.println(e.getMessage());
}
}

// POM initElements() 도 피하는 항목... 동적 버튼 이라 DOM에서 사라지는걸 의미하는게 아닌가 싶음
// https://www.softwaretestingmaterial.com/stale-element-reference-exception-selenium-webdriver/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ public ContractSetup_Step2page(WebDriver driver) {
super(driver);
}

////////////////////// 추가 내용 입력하기 /////////////////////


// 추가 내용 입력하기 - 텍스트
@FindBy(xpath = ("//button[contains(text(),'+ 텍스트 입력하기')]"))
WebElement Signature_Requester_Textinput_btn;

Expand Down
38 changes: 30 additions & 8 deletions SeleniumJO/src/test/java/POM_01_DocumentsPage/DocumentsPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,25 +42,47 @@ public DocumentsPage(WebDriver driver) {

}

// 0329
// 문서함 첫번째 리스트 "내 서명 필요 확인"
// 화면이 바로 갱신 되지 않는 이슈? 경우? 가 있음 (특히 프리뷰에서)
// 화면이 바로 갱신 되지 않는 이슈? 경우? 가 있음 (특히 프리뷰에서)
// 때문에 간혹 멈추는 경우가 있어 임시로 넣어둠 효과 없으면 삭제 예정
// fail 이 나더라도 멈추지 않고 Fail 상태확인 할 수 있게 두었음

// 0331
// 문서가 생각보다 더 늦게 만들어지는 경우가 있는듯(서명을 뭔가 대량으로 발생 시켰을 경우? 프리뷰 경우?)
// 문서 ID 와 같은 걸로 100%매칭 시킬 필요가 있지 않을까도 싶음
@FindBy(xpath = (("(//li[@display='flex'])[1]")))
WebElement ContractStatus_Check;

public void ContractStatus_Check() throws InterruptedException {

String actual = Wait.until(ExpectedConditions.visibilityOf(ContractStatus_Check)).getText();
String expect = ("내 서명 필요");
for (int i = 0; i < 5; i++) {
try {
if (Wait.until(ExpectedConditions.visibilityOf(ContractStatus_Check)).getText().equals("내 서명 필요")) {

System.out.println(expect + " <-- 내 서명 필요 출력 됬나?");
} else {

System.out.println("내 서명 필요 상태가 아님");
driver.navigate().refresh();

i++;

for (int i = 0; i < 10; i++) {
}
} catch (NoSuchElementException e) {
System.out.println(e);
}
}
}

public void ContractStatus_Check2() throws InterruptedException {

for (int i = 0; i < 5; i++) {
try {
if (actual.equals(expect)) {
if (Wait.until(ExpectedConditions.visibilityOf(ContractStatus_Check)).getText().equals("완료된 문서")) {

} else {
System.out.println("내 서명 필요 상태가 아님");

System.out.println("완료된 문서 상태가 아님");

driver.navigate().refresh();
i++;
Expand Down Expand Up @@ -207,7 +229,7 @@ public void AllScreen() throws IOException, InterruptedException {

public void ElementCapture() throws IOException, InterruptedException {

// jqury 오류 대응 코드, 이게 뭔지는 나도 잘 모름
// Asot jqury 오류 대응 코드, 근데 Ashot 으로 이미지 캡쳐 안해서 필요는 없을 것 같지만 혹시나 해서 놔둠
JavascriptExecutor js = (JavascriptExecutor) driver;
if (!(Boolean) js.executeScript("return (typeof jQuery != \"undefined\")")) {
js.executeScript("var headID = document.getElementsByTagName('head')[0];"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@ public TempletePage_CreateTempleteStep2Page(WebDriver driver) {
// .체크박스 입력하기.
// +이미지 입력하기.

// css 로 잡혀 있는 부분 임시 수정 해본 상태
// 첫 번째 서명자 사인/도장.
@FindBy(css = (".css-w07yg0 .css-1dgk6ra"))
// @FindBy(css = (".css-w07yg0 .css-1dgk6ra"))
// WebElement SignatureField_1_btn;

@FindBy(xpath = ("(//button[@type='button'])[8]"))
WebElement SignatureField_1_btn;

public void SignatureField_1_btn() throws InterruptedException {
Expand All @@ -29,7 +33,10 @@ public void SignatureField_1_btn() throws InterruptedException {
}

// 첫 번째 서명자 텍스트 필드.
@FindBy(css = (".css-skfhhz"))
// @FindBy(css = (".css-skfhhz"))
// WebElement TextField_1_btn;

@FindBy(xpath = ("(//button[@type='button'])[10]"))
WebElement TextField_1_btn;

public void TextField_1_btn() throws InterruptedException {
Expand All @@ -38,7 +45,10 @@ public void TextField_1_btn() throws InterruptedException {
}

// 첫 번째 서명자 체크박스 선택.
@FindBy(css = (".css-w07yg0 .FieldLocator:nth-child(3) > .css-skfhhz"))
// @FindBy(css = (".css-w07yg0 .FieldLocator:nth-child(3) > .css-skfhhz"))
// WebElement CheckboxField_1_btn;

@FindBy(xpath = ("(//button[@type='button'])[11]"))
WebElement CheckboxField_1_btn;

public void CheckboxField_1_btn() throws InterruptedException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ public void TestSend_btn() throws InterruptedException {
@FindBy(xpath = ("//input[@placeholder='이메일 또는 휴대폰 번호']"))
WebElement TestSend_EmailandPhoneNumber_input;

public void TestSend_EmailandPhoneNumber_input_m() throws InterruptedException {
public void TestSend_EmailandPhoneNumber_input_m(String arg1) throws InterruptedException {
Wait.until(ExpectedConditions.visibilityOf(TestSend_EmailandPhoneNumber_input)).click();
Wait.until(ExpectedConditions.visibilityOf(TestSend_EmailandPhoneNumber_input)).sendKeys("[email protected]");
Wait.until(ExpectedConditions.visibilityOf(TestSend_EmailandPhoneNumber_input)).sendKeys(arg1);

}

Expand Down Expand Up @@ -183,6 +183,28 @@ public void BulkRequest_StatusDone_Check() throws InterruptedException {

///////////////////////////////////////////////////////////////////////////////


// 2? 4건 이하 보낼 경우에만 완료 모달 나오는 이슈 대응
public void BulkRequest_Send_1Send_m() throws InterruptedException {
FolderList_btn();
FolderList_1_Select();

// 동적 버튼이라 바로 찾지 말고 상태가 변경 되면 입력 되어야 해서 그냥 시간을 둠
Thread.sleep(2000);
BulkRequestStatusChange_btn();

Checkbox_checkbox_m();
BulkRequest_StatusChange_confirm_btn();

BulkRequest_Start_confirm_btn();

Thread.sleep(3000);

BulkRequest_DoneModal_confirm_btn();

}


public void BulkRequest_Send_m() throws InterruptedException {
FolderList_btn();
FolderList_1_Select();
Expand Down
36 changes: 17 additions & 19 deletions SeleniumJO/src/test/java/Test/TestBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,30 +57,29 @@ public class TestBase {

protected BulkRequestPage_StartPage ObjBulkRequestPage_StartPage;
protected BulkRequestPage_SendPage ObjBulkRequestPage_SendPage;

protected SettingsPage_PricingPaymentPage ObjSettingsPage_PricingPaymentPage;

@BeforeMethod
@Parameters("browser")
public void initializeWebDriver(String browser) throws IOException {

if (browser.equalsIgnoreCase("Chrome")) {
System.setProperty("webdriver.chrome.driver",
"C:\\Automation_Driver\\chromedriver_win32 (1)/chromedriver.exe");
System.setProperty("webdriver.chrome.driver",
// "C:\\Automation_Driver\\chromedriver_win32 (1)/chromedriver.exe");

//System.setProperty("webdriver.chrome.driver",
// "/Users/johnny/Desktop/Selenium_img/driver/chromedriver_mac64/chromedriver");
"/Users/johnny/Desktop/Selenium_img/driver/chromedriver_mac64/chromedriver");

// 크롬 업데이트대응
// 크롬 업데이트대응
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
driver = new ChromeDriver(options);

// 헤드리스 모드 고민 필요
// 현재 자동화가 브라우저가 켜지면서 돌아가는데 그럴 때 내가 다른 작업을 하면 자동화가 멈추는 경우가 있음
// 자동화 돌아가는거 구경만 하고 있어야 하는 상황이라 헤드리스를 사용해야 할 것 같긴한데
// 자동화 돌아가는거 구경만 하고 있어야 하는 상황이라 헤드리스를 사용해야 할 것 같긴한데
// 그럼 Fail 난 경우 추적하기가 번거롭기도 함 --> 대책이 있다면 상관 없음
// 일단 크롬 드라이버 업데이트로 헤드리스 자체에 에러가 있어 객체 찾지 못해서 보류 상태
// 일단 크롬 드라이버 업데이트로 헤드리스 자체에 에러가 있어 객체 찾지 못해서 보류 상태
// ChromeOptions options = new ChromeOptions();
// options.addArguments("--remote-allow-origins=*");
// options.addArguments("--headless");
Expand All @@ -91,11 +90,10 @@ public void initializeWebDriver(String browser) throws IOException {

}

else if(browser.equalsIgnoreCase("Edge")){
System.setProperty("webdriver.edge.driver",
"C:\\Automation_Driver\\edgedriver_win64/msedgedriver.exe");
driver = new EdgeDriver();
}
else if (browser.equalsIgnoreCase("Edge")) {
System.setProperty("webdriver.edge.driver", "C:\\Automation_Driver\\edgedriver_win64/msedgedriver.exe");
driver = new EdgeDriver();
}

else if (browser.equalsIgnoreCase("Safari")) {
SafariOptions options = new SafariOptions();
Expand All @@ -114,12 +112,13 @@ else if (browser.equalsIgnoreCase("Firefox")) {
// Stage URL
driver.get("https://stage-app.modusign.co.kr/");

// 프리뷰 URL
//driver.get("https://deploy-preview-8218--modusign-app.netlify.app");

// 프로덕션 URL
//driver.get("https://app.modusign.co.kr/authentication/signin?redirectTo=%2Fdocuments");
// driver.get("https://app.modusign.co.kr/");

// 프리뷰 URL
//driver.get("https://deploy-preview-8249--modusign-app.netlify.app/");


// 페이지로드 타임아웃 효과가 있는지잘 모르겠음. 없는거 같기도..
// https://www.browserstack.com/guide/understanding-selenium-timeouts
// driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
Expand Down Expand Up @@ -149,14 +148,13 @@ else if (browser.equalsIgnoreCase("Firefox")) {
ObjBulkRequestPage_StartPage = new BulkRequestPage_StartPage(driver);
ObjBulkRequestPage_SendPage = new BulkRequestPage_SendPage(driver);


ObjSettingsPage_PricingPaymentPage = new SettingsPage_PricingPaymentPage(driver);
}

@AfterMethod
public void tearDown(ITestResult Result) {
if (Result.getStatus() == ITestResult.SUCCESS)

driver.quit();

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import Test.TestBase;
import Testrail_client.Testrails.TestRails;

@Ignore
//@Ignore
public class Templete_BulkRequest_E2E_DefaultCase extends TestBase {

@TestRails(id = "")
Expand Down Expand Up @@ -60,11 +60,17 @@ public void Templete_BulkRequest_E2E_DefaultCase_Singatory_1_(@Optional String S
ObjLoginPage.Login_m(Signatory_1_email, "tlswnsdh2@@");

Thread.sleep(2000);

ObjDocumentsPage.ContractStatus_Check();

ObjDocumentsPage.Documents_Dropdown_1_select_m();

ObjDocumentsPage_ContractPage.NormalSign_Off_Case("텍스트 입력 필드");

Thread.sleep(3000);

ObjDocumentsPage.ContractStatus_Check2();

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import Test.TestBase;
import Testrail_client.Testrails.TestRails;

@Ignore
//@Ignore
public class Templete_BulkRequest_E2E_OnCase extends TestBase {

@TestRails(id = "")
Expand All @@ -36,6 +36,7 @@ public void Templete_BulkRequest_E2E_OnCase(@Optional String signature_requester
Thread.sleep(3000);

driver.navigate().refresh();

ObjTempletePage.Templete_Dropdown_BulckRequest_select();

// 파일 너무 빨리 올리면 에러 나와서 추가 해둠
Expand All @@ -62,6 +63,8 @@ public void Templete_BulkRequest_E2E_OnCase_Singatory_1_(@Optional String Signat
ObjLoginPage.Login_m(Signatory_1_email, "tlswnsdh2@@");

Thread.sleep(2000);

ObjDocumentsPage.ContractStatus_Check();

ObjDocumentsPage.Documents_Dropdown_1_select_m();

Expand All @@ -75,8 +78,8 @@ public void Templete_BulkRequest_E2E_OnCase_Singatory_1_(@Optional String Signat
ObjDocumentsPage_ContractPage.Step2Page_BasicinputCase_m();

Thread.sleep(3000);

driver.navigate().refresh();
ObjDocumentsPage.ContractStatus_Check2();

ObjDocumentsPage.Documents_Dropdown_1_select_m();

Expand All @@ -95,6 +98,8 @@ public void Templete_BulkRequest_E2E_OnCase_Singatory_2_(@Optional String Signat
ObjLoginPage.Login_m(Signatory_2_email, "tlswnsdh2@@");

Thread.sleep(2000);

ObjDocumentsPage.ContractStatus_Check();

ObjDocumentsPage.Documents_Dropdown_1_select_m();

Expand All @@ -108,14 +113,20 @@ public void Templete_BulkRequest_E2E_OnCase_Singatory_2_(@Optional String Signat
ObjDocumentsPage_ContractPage.Step2Page_BasicinputCase_m();

Thread.sleep(3000);

driver.navigate().refresh();
ObjDocumentsPage.ContractStatus_Check2();

ObjDocumentsPage.Documents_Dropdown_1_select_m();

ObjDocumentsPage.Contract_DonePage_Password_input("12341234");

ObjDocumentsPage.Contract_DonePage_Password_Done_btn();

Thread.sleep(3000);

ObjDocumentsPage.ContractStatus_Check2();



}

Expand Down
Loading

0 comments on commit e1e4b7b

Please sign in to comment.