답변:
그들은 다른 문제를 공격하고 있습니다. PhantomJS는 명령 줄에서 완벽하게 실행되므로 개발 워크 플로 및 / 또는 지속적인 통합 서버의 일부로 연기 테스트의 첫 번째 계층으로 적합합니다. Selenium은 여러 브라우저를 대상으로하므로 브라우저 간 일관성을 유지하고 여러 운영 체제에서 광범위한 테스트를 수행하는 것이 매우 유용합니다.
웹 응용 프로그램을 다양한 웹 브라우저에서 실행해야하는 경우 PhantomJS로만 UI 테스트를 실행해도 가장 많은 테스트 범위를 얻을 수 없습니다. 그러나 심층 테스트를 수행하기 전에 PhantomJS를 시작하고 기본 상태 검사를 수행하는 것이 좋습니다. 로그인 화면이 실수로 고장 나고 기능이없는 금융 응용 프로그램을 테스트하는 광기가 있다고 상상해보십시오!
최신 PhantomJS의 최신 WebDriver 지원으로이 둘 사이의 선이 약간 흐려집니다. 이제 PhantomJS를 사용하여 먼저 테스트를 빠르게 실행 한 다음 심각한 오류가 발생하지 않는다고 가정하면 Selenium 설정에서 동일한 테스트를 계속 수행 할 수 있습니다.
현재 웹 추출 프레임 워크를 작성 중입니다. XPath를 사용하여 250 개 웹 사이트에서 데이터를 가져 오는 524 개의 테스트가 있습니다. 처음에 프레임 워크는 HTML 파서 인 HTMLCleaner를 사용했지만 Javascript 지원을 원하기 때문에 현재 Selenium을 사용 하고 있습니다. HtmlUnit, Chrome, Firefox 및 PhantomJS 드라이버 에 대한 테스트를 실행했습니다 . 다음은 각 접근 방식의 소요 시간과 실패 횟수를 비교 한 것입니다.
Failures Time (secs)
HtmlCleaner 0 82
HtmlUnit 169 102
Google Chrome 38 562
Firefox 46 1159
PhantomJS 40 575
일부 의견 :
경우에 따라 "실패"가 전혀 실패하지 않을 수 있습니다. Javascript가 DOM을 다시 작성하기 때문에 추출기가 실패했을 수 있습니다. 원인을 찾기 위해 실패를 분석하는 중입니다.
즉, HtmlUnit은 가장 빠른 Selenium 드라이버이지만 신뢰할 수 없습니다. 이 신뢰할 수없는 것은 자바 스크립트에만 해당되는 것이 아니며, 태그 밸런싱 알고리즘에서 무언가가 깨져서 "지저분하고 더러워진 실제"HTML을 처리하는 데 문제가있는 것입니다. 이에 대해 몇 가지 문제가 제기되었지만 수정되지 않았습니다 ( HTML-UNIT 1423 및 HTML-UNIT 1046 참조) .
이미지로드 및 스타일 시트를 비활성화하더라도 Firefox는 가장 느린 Selenium 드라이버입니다. 로드 및 초기화 속도가 가장 느리기 때문에 Chrome보다 속도가 느리고 추출에 실패 할 때마다 드라이버를 다시로드해야합니다 (테스트에서 5 개의 드라이버 풀을 생성하여 모두에 대한 URL 검색 지연을 완화합니다) 셀레늄 웹 드라이버).
PhantomJS는 Firefox보다 정확도가 높고 Chrome보다 약간 낮지 만 Firefox 시간의 절반 정도입니다. 무엇보다, 나는 내 dev 상자에서 실행할 수 있으며 여러 브라우저를 시작하여 "내 컴퓨터를 인계하지"않기 때문에 작업을 계속할 수 있습니다.
PhantomJS를 강력히 추천합니다.
Selenium과 PhantomJS의 성능 활용 PhantomJS는 헤드리스 브라우저 기능을 갖추고 있으므로 셀레늄이있는 브라우저 중 하나로 사용하는 것이 좋습니다 (IE, Chrome 등의 기존 브라우저 외에도)이 방법의 장점 :
PhantomJS를 사용하면서 직면 한 과제 :
내 응용 프로그램은 웹 응용 프로그램의 가격을 책정했습니다.