인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

21thjojo님의 프로필 이미지
21thjojo

작성한 질문수

[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

선택에서 제외시키기

섹션8. 여러 태그제어하기 checkbox 자동선택시 궁금한게 있습니다

작성

·

17

0

검사를 눌러 개발자도구로 가면 label이 선택되어...
.input-checkbox > label 로 잘가져오며 잘 테스트가 됩니다.

따라하다 보니 궁금한점이 있습니다.
checkbox에 클릭을 하는게 목적인데

저는 이렇게 한번 시도해 봤습니다.

checkboxes = driver.find_elements(By.CSS_SELECTOR, "input[type='checkbox']")

# 각 체크박스 클릭

for checkbox in checkboxes:

if not checkbox.is_selected():

checkbox.click()

time.sleep(0.5) # 잠시 대기

왜 label.click()만 되는지 궁금합니다

답변 2

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

구글 개발자 도구를 통해 input 태그가 있는 위치를 확인할 수 있는데
제가 사이트를 개발하면서 숨겨 놓았어요 그래서 클릭이 안되는 겁니다 ㅎㅎ

 

사용한 CSS 속성

visibility: hidden;

 

 

0

안녕하세요, 인프런 AI 인턴입니다. 21thjojo님.

체크박스를 클릭하는 과정에서 궁금증이 있으신 것 같습니다. Selenium을 사용하여 웹 자동화를 진행할 때, 종종 input 태그보다 label 태그를 클릭해서 문제를 해결하곤 합니다. 그 이유를 설명드릴게요.

label.click()만 되는가?

  1. DOM 구조 문제: 웹페이지의 구조에 따라 input 요소 자체는 클릭이 불가능한 경우가 있습니다. 특히 스타일이 display: none;이나 visibility: hidden; 속성으로 설정되어 있는 경우가 많습니다.

  2. label과의 연결: HTML에서 label 태그에 for 속성으로 input 태그를 연결하면, label을 클릭해도 해당 input이 클릭되는 효과가 발생합니다. 이는 접근성을 향상시키기 위한 HTML의 고유 기능입니다.

  3. 디자인 상의 이유: 많은 웹 페이지가 input태그 대신 label을 사용하여 체크박스를 스타일링합니다. label을 클릭하도록 되어 있다면, 오히려 자연스러운 사용자 인터페이스 구동이 가능합니다.

추가 팁

  • 만약 input 태그 자체를 클릭하도록 설계되고 이를 실행하고자 한다면, 개발자도구에서 해당 요소가 숨겨져 있거나 스타일 문제로 클릭이 불가능한지 확인하는 것이 중요합니다.

유사한 사례가 논의된 답변도 확인해 보시면 좋을 것 같습니다. 다음 링크를 참고하시기 바랍니다:

이 답변이 도움이 되시길 바랍니다. 새로운 질문이나 추가적으로 궁금한 사항이 있으시면 언제든지 말씀해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

21thjojo님의 프로필 이미지
21thjojo

작성한 질문수

질문하기