폴터 가이스트 / PhantomJS와 카피 바라 웹킷은 어떻게 다릅니 까?
- PhantomJS와 capybara-webkit의 차이점은 무엇입니까?
- PhantomJS에 비해 capybara-webkit의 장점은 무엇입니까?
- 두 가지 중 가장 효율적인 도구는 무엇입니까?
- 기타 ...
심령이 PhantomJS, 웹킷에 내장 된 헤드리스 브라우저의 카피 바라 드라이버입니다. capybara-webkit은 WebKit을 직접 사용하는 capybara 드라이버입니다.
poltergeist / PhantomJS는 capybara-webkit에 비해 몇 가지 큰 장점이 있습니다.
- 내 경험상 poltergeist / PhantomJS는 항상 시간이 초과되는 반면 capybara-webkit은 때때로 중단됩니다.
- 오류 메시지는 훨씬 더 명확합니다. 예를 들어, 페이지 앞에 다른 요소가 있기 때문에 페이지에있는 요소를 클릭 할 수 없는지 여부를 실제로 알려줍니다.
- 자바 스크립트 오류를 테스트 오류로 다시 발생 시키도록 지시 할 수 있습니다 ( js_errors : true로 드라이버를 인스턴스화함으로써 ).
- PhantomJS는 독립형 WebKit보다 설치가 훨씬 쉽습니다. PhantomJS는 다운로드 할 수있는 거의 종속성이없는 실행 파일을 제공하는 반면, 독립형 WebKit에는 업그레이드하거나 조작해야하는 많은 OS 라이브러리 종속성이 있습니다.
TL; DR
- Poltergeist / PhantomJS는 설정이 더 쉽습니다.
- Poltergeist / PhantomJS는 종속성이 적습니다.
- Capybara-webkit은 더 안정적이고 신뢰할 수 있으며 CI에 더 좋습니다.
긴:
저는 Poltergeist + PhantomJS를 1 년 이상 사용하고 있습니다. 내 가장 큰 프로젝트에는 많은 Ajax 호출, 파일 업로드, 이미지 조작, JS 템플릿 및 순수한 CSS3 애니메이션이 있습니다.
때때로 Poltergeist와 PhantomJS는 임의의 오류를 생성했습니다.
그들 중 일부는 내 실수였습니다. Ajax 테스트는 까다 롭습니다. 일반적인 오류는 성공적인 테스트가 끝날 때 database_cleaner gem이 데이터베이스를 잘랐지만 하나의 Ajax 호출이 여전히 실행 중이고 빈 데이터베이스로 인해 컨트롤러에서 예외를 생성했다는 것입니다. sleep ()을 사용하지 않는 한 이것은 항상 고치기 쉬운 것은 아닙니다. (아니요).
그러나 Poltergeist의 많은 오류는 내 실수가 아닙니다. 나는 똑같은 일을 30 번 (좋은 이유 때문에)하는 테스트가 있고 30 번 중 1 번은 작동하지 않았습니다. Poltergeist는 버튼을 전혀 클릭하지 않았습니다. 애니메이션이 아닌 눈에 보이는 일반 버튼이었습니다. 나는 그것을 고칠 수 있지만 (다시 클릭함으로써), 그것은 추악한 해킹이며 잘못된 느낌입니다.
때때로 모든 브라우저에서 작동하는 스크립트가 Poltergeist / PhantomJS에서 임의의 자바 스크립트 오류를 생성했습니다. 100 회 중 1 ~ 2 회 정도.
두 개의 다른 Ajax 업 로더 플러그인을 사용하여 PhantomJS 1.9 및 2.0이 다르게 작동하는 것을 경험했습니다. 2.0은 더 안정적이고 일관 적이지만 완벽하지는 않습니다.
이것은 Jenkins에게 큰 고통이었습니다. 400 개 기능 (js 브라우저 테스트) 중 1 개 또는 2 개가 임의의 오류를 생성했기 때문에 세 번째 실행마다 실패했습니다.
2 주 전에 카피 바라 웹킷을 사용해 보았습니다. 보이지 않는 요소를 다르게 취급하기 때문에 마이그레이션하는 데 몇 시간이 걸렸습니다. Capybara-webkit이 더 정확하거나 엄격합니다. 겹치는 요소에 대해서도 똑같이 느꼈습니다.
Ajax 업로드 및 이미지 조작을 테스트하려면 Capybara-webkit에 대해 수정해야하는 사용자 지정 스크립트가 필요합니다.
저는 개발에 Mac OS X를, 프로덕션에 FreeBSD를, Jenkins에 Linux를 사용하고 있습니다. Capybara-webkit은 화면이 필요하고 많은 종속성이 있기 때문에 Poltergeist보다 설정하기가 더 복잡했습니다. PhantomJS만이 진정한 헤드리스이며 독립형입니다. 원하는 경우 프로덕션 서버에서 PhantomJS를 실행할 수 있습니다. 종속성으로 인해 capybara-webkit에서는 그렇게하지 않을 것입니다.
이제 100 % 안정적인 Jenkins CI가 있습니다. 모든 임의의 자바 스크립트 오류는 과거의 기억입니다. Capybara-webkit은 항상 클릭하고 싶은 버튼을 클릭합니다. Javascript는 항상 잘 작동합니다. 현재 약 20-25 개의 안정적인 빌드가 직선으로 있습니다.
Ajax가 많은 프로젝트의 경우 capybara-webkit을 권장합니다.
제 조언은 2015 년 8 월의 최신 버전을 기반으로합니다.
capybara-webkit과 PhantomJS는 둘 다 Webkit을 사용하여 웹 페이지를 헤드리스로 렌더링합니다. 즉, 브라우저가 필요하지 않습니다. 그러나 그들은 다른 도구입니다.
- capybara-webkit은 Rails 또는 Rack 앱에 대한 높은 수준의 UI 테스트를 작성하고 수행 할 수있는 Ruby gem 인 Capybara의 어댑터 역할을합니다.
- PhantomJS는 웹 페이지에 대해 스크립트를 간단히 실행할 수있는 하위 수준 도구입니다. 또한 UI 테스트를 작성하는 데에도 사용할 수 있습니다 ( 예를 들어 Casper 또는 PhantomJS를 기반으로 하는 다른 테스트 도구 참조).
PhantomJS는 정말 짜증나는 오디오 / 비디오와 같은 HTML5 기능을 지원하지 않습니다.
참고 URL : https://stackoverflow.com/questions/23951381/how-do-poltergeist-phantomjs-and-capybara-webkit-differ
'Nice programing' 카테고리의 다른 글
마스크 / 자르기없이 SVG를 컨테이너로 확장 (0) | 2020.12.04 |
---|---|
모든 벡터 요소의 조합으로 두 벡터 붙여 넣기 (0) | 2020.12.04 |
Young, Tenured 및 Perm 세대 (0) | 2020.12.04 |
JSP 페이지 세션 = "false"지시문을 설정하는 이유는 무엇입니까? (0) | 2020.12.04 |
스프링 보안의 SecurityContextHolder : 세션 또는 요청 바인딩? (0) | 2020.12.04 |