XPath?

'특정한 요소, 속성의 경로' 입니다

직접 네이버로그인을 셀레니움으로 해보며 알아봅시다

 


XPath가져오기

우리가 클릭하고 입력해야할 버튼과 텍스트박스

먼저 로그인을 하기 위해 사진의 로그인버튼을 눌러야 합니다

어 그런데 우리는 마우스커서를 버튼에 올려서 클릭만 하면 되었는데 '로그인버튼'을 어떻게 코드로 작성할지 아리송하시죠? 그럴때 필요한게 바로 로그인버튼의 경로를 알려주는 XPath를 이용하면됩니다

 

발퀄 ㅈㅅ..

성격상 각잡고 하려면 시작조차 안해서 대충이라도 올리려고 그림판으로 대충 표시만 했습니다.. 양해부탁...

아무튼 브라우저에서 F12를 누르면 개발자도구창이 나옵니다

우상단에 빨갛게 동그라미로 표시한 버튼을 누른뒤 웹에서 XPath를 얻고자하는 요소를 누릅니다

 

그러면 개발자 도구창에 파랗게 선택이 되는데 이것이 클릭한 요소입니다.

우리는 XPath값을 얻어야하므로 우클릭->Copy->Copy XPath를 눌러서 XPath값을 얻을 수 있습니다!!

컨트롤V하면 XPath를 볼 수 있는데

//XPath원본
//*[@id="account"]/a

//꼭 큰따옴표를 작은따옴표로 변경해야합니다
//*[@id='account']/a

이렇게 표시되는것을 알 수있습니다. 꼭 따옴표를 변경하세요!!

 

여기서 full XPath가 무엇인지 궁금해하실 수 있는데

XPath는 요소의 '상대경로'

full XPath는 '절대경로' 입니다

가끔 XPath로 작동이 되지 않는 웹이 있는데 이럴땐 fullXPath로 작동하면 대부분 잘 됩니다

 

자 이제 XPath를 가져올 수 있으니 클릭을 해봅시다


클릭

먼저 네이버URL로 이동합시다

//브라우저 생성
_driver = new ChromeDriver(_driverService, _options);
_driver.Navigate().GoToUrl("https://www.naver.com/");

아주 간단하죠? 브라우저 생성후 이동하면 됩니다

 

클릭코드는 아래와 같습니다

private void btn_click_loginpage_Click(object sender, EventArgs e)
{
    try
    {
        //요소를 찾습니다
        _web_elem = _driver.FindElement(By.XPath("//*[@id='account']/a"));
        //클릭합니다
        _web_elem.Click();
    }
    catch(NoSuchElementException exception)
    {
        //요소가 없습니다
    }
}

정말 간단하죠? 만약 요소를 찾을 수 없다면 catch문으로 빠져나옵니다

 

다음 포스트에서는 페이지로딩대기, 아이디와 비밀번호입력까지 진행하겠습니다

 

https://github.com/ForestBird1/TestSelenium.git

 

GitHub - ForestBird1/TestSelenium

Contribute to ForestBird1/TestSelenium development by creating an account on GitHub.

github.com

 

+ Recent posts