webDriver JavaScript 클릭 문제!

"ElementNotInteractable 또는 AnotherElementWillReceiveTheClick과 같은 문제를 피할 수 있도록 javascript를 사용하여 해당 요소를 클릭해 봅시다."일부 자동화 엔지니어 - 2020.

나는 이것을 여러 번 들었고 솔직히 말해서 클릭이 작동하도록 하는 유일한 방법인 극단적인 경우가 있습니다. 그러나 나는 개인적으로 그 접근 방식을 최신 소스로 사용하려고 노력하며 여기에 그 이유가 있습니다.

이야기



오늘 고객으로부터 메시지를 받았습니다. '마케팅에서 페이지에 새 구성 요소를 저장할 수 없습니다. 저장 버튼이 없다고 합니다.'

그래서 자동 테스트를 확인하기 위해 이메일을 열었고 모두 통과했습니다. 100% 성공. 이 시점에서 나는 그것이 시스템의 결함일 가능성이 가장 높다고 생각하기 시작했습니다. 그래서 수동으로 테스트를 시작했고 save icon 참으로 실종되었습니다.



그런데.. 내 테스트에서 이 문제를 찾지 못한 이유는 무엇입니까? 이것은 모든 테스트가 통과하는 흐름입니다. 즉, 수백 번 실패해야 했습니다.

그래서 코드를 열어보니.. 바로 문제를 발견했습니다...

...
seleniumHelper.clickElementJavaScriptExecutor(checkIcon);
...
   public void clickElementJavaScriptExecutor(WebElement element){
        ((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);
    }
...

이것은 버그가 100% 테스트 사례 증거인 경우, 즉 다른 말로 쓸모없는 테스트를 한 경우 중 하나입니다.

설명



이 특정 사례의 경우 요소가 페이지에 존재합니다.



그러나 그것은 숨겨져 있었고 일반 고객과 아무 의미가 없는 자바 스크립트에는 표시되지 않았습니다. 스크립트는 클릭 이벤트 바인딩을 트리거하고 요소가 존재하는 한 계속 진행합니다.

이로 인해 자동화된 흐름이 오류 없이 완료되었고 테스트 사례는 실제 고객 문제를 노출하지 않았습니다. 정상적인 클릭을 위해 javascript 클릭을 변경한 후 모든 테스트가 예상대로 실패하기 시작했습니다.

checkIcon.click();
WebDriver error. Failed Authoring: Component: phonenumberFailure Reason: org.openqa.selenium.ElementNotInteractableException: element not interactable .

엔딩 노트



스크립트의 모든 단일 작업은 유효성 검사로 작동해야 합니다. 클릭, 입력, 선택.. 그 중 하나가 실패하면 웹 사이트에서 문제가 발생합니다. 이것은 테스트를 보다 안정적으로 만들고 오탐을 방지하는 데 도움이 되는 지속적인 유효성 검사 접근 방식입니다. (내 이야기처럼).

따라서 요소를 클릭하기 위해 javascript를 사용하는 것이 때때로 좋은 생각입니다. 예를 들어 일반적인 웹 드라이버 클릭이 작동하지 않는 것처럼 보이거나 구성 요소를 서로 위에 배치하는 매우 구체적인 UI가 있고 클릭 영역이 매우 작은 경우입니다.

그러나 실제 사용자 흐름이 아니기 때문에 피해야 합니다.

코멘트?

건배 :) 그리고 webdriver를 계속 사용하는 것을 기억하십시오
https://pjcalvo.github.com

게시물이 마음에 든다면:

좋은 웹페이지 즐겨찾기