Programming/C#

C# 셀레니움 - 웹기반 출근퇴근 자동으로 하기 - 1 텍스트 박스 설정

Pendine 2021. 5. 24. 12:17
728x90

근태 처리과정은 다음과 같다.

 

1. 컴퓨터를 켜서

2. 웹을 켜서

3. 로그인을 하고

4. 근태화면으로 넘어가서 

5. 근태버튼을 누르고

6. 출근 버튼을 누른다.

 

-------------------------------------------

마지막으로 출근 확인 버튼을 누르는 과정까지 포함한다면 7번째까지 있는것과 같다.

 

모바일로도 어플리케이션이 존재하지만

자동출퇴근 기능이 있는것도 아니라서

만들어 보기로 했다.

 

처음 셀레니움을 알기전에 검색했던 키워드는

'C# 웹 버튼 클릭'

으로 검색해서 나왔던 글들을 확인했고 

프로그램의 고유 기능이 있다면 사용해보고 싶었지만

이 귀찮음을 빠르게 해결하기 위해 + 새로운 라이브러리를 사용해보고싶다는 마음으로 인해서

셀레니움을 사용하는 글을 참고해서 만들어보게 됐다.

 

-------------------------------------------

 

 

public Form1()
{
	InitializeComponent();
	Log_Info("시작");
	txtList = new TextBox[] { IdText, PassText };
	foreach (var txt in txtList)
	{
		//처음 공백 Placeholder 지정
		txt.ForeColor = Color.DarkGray;
		if (txt == IdText) txt.Text = IdPlaceholder;
		else if (txt == PassText) txt.Text = PwPlaceholder;
		//텍스트박스 커서 Focus 여부에 따라 이벤트 지정
		txt.GotFocus += RemovePlaceholder;
		txt.LostFocus += SetPlaceholder;
	}
	FormClosing += new FormClosingEventHandler(closing);
}

가장 먼저 폼형식의 부분에 대해서 설명하자면

C# 에서 텍스트 박스에 placeHolder 형식을 지원하지 않는것같아서 

아이디, 패스워드를 입력할 텍스트박스에 텍스트 컬러를 입력해줬다.

 

 

아래는 아이디, 패스워드의 텍스트 박스가 비어있을때, 새로 입력할때의 동작을 정의하였다.

        private void RemovePlaceholder(object sender, EventArgs e)
        {
            // C# placeholder 참조사이트
            //https://ella-devblog.tistory.com/70

            TextBox txt = (TextBox)sender;
            if (txt.Text == IdPlaceholder | txt.Text == PwPlaceholder)
            { //텍스트박스 내용이 사용자가 입력한 값이 아닌 Placeholder일 경우에만, 커서 포커스일때 빈칸으로 만들기
                txt.ForeColor = Color.Black; //사용자 입력 진한 글씨
                txt.Text = string.Empty;
                if (txt == PassText) PassText.PasswordChar = '●';
            }
        }

        private void SetPlaceholder(object sender, EventArgs e)
        {
            // C# placeholder 참조사이트
            //https://ella-devblog.tistory.com/70

            TextBox txt = (TextBox)sender;
            if (string.IsNullOrWhiteSpace(txt.Text))
            {
                //사용자 입력값이 하나도 없는 경우에 포커스 잃으면 Placeholder 적용해주기
                txt.ForeColor = Color.DarkGray; //Placeholder 흐린 글씨
                if (txt == IdText) 
                    txt.Text = IdPlaceholder;
                else if (txt == PassText) 
                { 
                    txt.Text = PwPlaceholder; 
                    PassText.PasswordChar = default; 
                }
            }
        }


        private void IdText_Enter(object sender, EventArgs e)
        {
            if (IdText.Text  == "아이디를 입력하세요")
            {
                IdText.Text = "";
                IdText.ForeColor = Color.Black;
            }

        }

        private void IdText_Leave(object sender, EventArgs e)
        {
            if (IdText.Text.Length == 0)
            {
                IdText.Text = "아이디를 입력하세요";
                IdText.ForeColor = Color.Gray;
            }
        }

        private bool isInfoReady()
        {
            if (PassText.Text == null || PassText.Text.Equals(PwPlaceholder))
            {
                MessageBox.Show("비밀번호를 입력해주세요", "경고");
                return false;
            }

            return true;
        }

 

 

각 텍스트박스

별로 비어있을때,

비어있지 않을때,

입력한 값이 존재했다가 없어졌을때를 조건으로 이용하여,

표시할 텍스트의 상태를 각각 따로 나타내게 하였다.

 

 

 

 

728x90