본문 바로가기
Programming/C#

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

by Pendine 2021. 5. 24.
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

댓글