• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    미해결

xpath 질의

24.02.16 18:02 작성 조회수 104

0

강사님 매번 강의로 도움많이받고있습니다 감사합니다.

 

개인적으로 일전에 구글을 예를 들어 다양한 키워드에 따라 생성 텝메뉴들이 달라져서 고민을 많이하던때가있었는데

'View탭 클릭하여 페이지넘어가기'강의와 같이 xpath 지정하였을때 '//*[text()="VIEW"]' 입력하면 되는것일까요?
음 현재 네이버가 뷰 서비스를 폐지했는데 만약 블로그를 클릭한다면 '//*[text()="블로그"]' 를 입력하면 클릭이되나요?안되서여ㅜㅜ혹시 도움이될만한 고견주시면 감사드리겠습니다.

답변 1

답변을 작성해보세요.

0

뷰 탭이 없어졌군요..
일단,
driver.find_element(By.XPATH, '//*[text()="블로그"]').click()
이렇게 하면 화면상의 첫번째 '블로그' 텍스트를 가진 요소를 찾아서 클릭을 하게 되는데
이게 우리가 원하는 블로그 탭의 요소가 아닙니다.

print(len(driver.find_elements(By.XPATH, '//*[text()="블로그"]')))

이렇게 작성해서 몇개인지 출력해보면 1개가 아닙니다.
지금 현재 4개가 나오네요.

blogs = driver.find_elements(By.XPATH, '//*[text()="블로그"]')

for blog in blogs:
    print(blog.get_attribute("outerHTML"))

이렇게 해보면 '블로그' 라는 텍스트를 가진 요소를 전부 찾아서 그 요소의 html을 출력합니다.
여기에서 확인해보면 지금 현재 블로그 탭으로 이동하기 위해서 클릭해야 하는 요소는 3번째로 출력됩니다.
인덱스로는 [2] 이렇게 되는거죠.

그렇다는건

driver.find_elements(By.XPATH, '//*[text()="블로그"]')[2].click()

이렇게 해야 클릭이 됩니다.

그리고 검색은 성공을 하셨으니 지금 이 질문을 올리셨을 거라고 생각되지만,
혹시나 하는 마음에 한가지 더 말씀드리자면,
검색 버튼을 클릭하는 태그도 바뀌었네요.

driver.find_element(By.CSS_SELECTOR, "#search_btn").click() 이거 대신

driver.find_element(By.CSS_SELECTOR, ".btn_search").click() 이렇게 넣어야 합니다.

동휘김님의 프로필

동휘김

질문자

2024.02.18

감사합니다 강사님