클릭 문제

'요소를 클릭할 수 없음' 오류

ChromeDriver 클릭은 요소의 첫 번째 클라이언트 직사각형 중간 (또는 첫 번째 클라이언트 직사각형이 없는 경우 경계 클라이언트 직사각형) 중간에서 마우스 클릭을 시뮬레이션하여 작동합니다. ChromeDriver가 클릭하려고 하는 위치를 찾는 가장 쉬운 방법은 Chrome devtools를 열고 클릭 작업이 호출되기 직전에 클릭될 요소를 검사하는 것입니다. 검사기에서 요소를 선택하면 아래 그림과 같이 요소의 클라이언트 rect를 나타내는 파란색 상자가 표시됩니다. ChromeDriver가 첫 번째 요소의 중간을 클릭하려고 시도합니다.

ChromeDriver에서 '요소를 클릭할 수 없음' 오류가 표시된다면 사용자가 해당 위치를 실제로 클릭할 수 없기 때문일 가능성이 높습니다. 테스트하려면 커서를 첫 번째 클라이언트 직사각형 중앙에 놓고 해당 위치를 클릭할 수 있는지 확인하세요.

위의 사례에서는 테스트에서 앵커 요소를 클릭하려고 했습니다. 이 경우에는 앵커를 클릭할 수 없으며 하위 이미지만 클릭할 수 있습니다. 이미지 요소의 margin-bottom 스타일로 인해 앵커 요소의 중간이 클릭 가능한 이미지 범위를 벗어나므로 ChromeDriver에서 오류가 발생합니다. 위치 및 크기가 결정되는 방법에 관한 자세한 내용은 w3 사양을 참고하세요. 위의 문제를 해결하려면 앵커 대신 이미지를 클릭하세요.

'요소를 클릭할 수 없음' 오류는 테스트에서 시도할 때 다음과 같은 상황에서 종종 발생합니다.

  • 클릭 가능한 하위 요소가 앵커 경계 내에 있지 않은 앵커 클릭 (위와 같음)
  • 다른 요소 아래에서 전체 또는 일부 요소 클릭
  • 고정 오버레이가 있는 경우 화면 밖 요소 클릭 (요소는 스크롤하여 볼 수 있지만 고정된 오버레이 아래로 스크롤될 수 있음)
  • 가운데에서 클릭할 수 없는 요소 클릭 (예: 볼록 SVG 요소의 일부 유형)

이러한 문제는 지정된 요소의 하위 항목을 클릭하거나, 프로그래밍 방식으로 차단 요소를 삭제 또는 숨기거나, 고급 상호작용 API를 사용하여 요소의 왼쪽 상단에서 오프셋을 클릭하거나, 자바스크립트에서 마우스 클릭 이벤트를 시뮬레이션하여 해결할 수 있습니다.

'요소를 클릭할 수 없음' 오류

이는 ChromeDriver가 요소의 위치를 결정한 후 ChromeDriver가 실제로 해당 위치에서 클릭을 실행하기 전에 요소의 위치가 변경되었기 때문에 발생할 가능성이 높습니다.

이것이 문제인지 확인하려면 클릭에서 예외를 포착하고 요소의 현재 위치와 크기를 즉시 로깅합니다. 이를 ChromeDriver가 예외를 클릭하려고 시도했다고 보고한 위치와 비교하여 다른지 확인합니다. 이 경우 요소의 움직임이 멈출 때까지 기다리거나 다시 클릭해야 합니다. 그렇지 않은 경우 문제를 재현하는 데 사용할 수 있는 소규모 테스트 페이지를 포함하여 버그를 신고합니다 (간혹 문제가 트리거되는 경우도 있음).

ChromeDriver가 움직이는 요소를 클릭할 수 없음

이는 ChromeDriver에서 지원되는 기능이 아닙니다. 요소가 최종적으로 중지되면 이 작업이 발생할 때까지 기다립니다. 요소의 움직임이 멈추지 않으면 ChromeDriver는 클릭 성공을 보장하지 않습니다.