2017-01-13 14 views
1

이 질문은 another question I asked의 일부입니다. 그러나 나는 이미이 부분에 대한 답을 찾았고 다른 사람들에게도 유용 할 것이라고 생각했다. 내 다른 질문 부 :평온한 보고서 (및 뷰포트뿐만 아니라)에 전체 페이지의 스크린 샷을 포함하려면 어떻게해야합니까?

나는 자동 스크린 테스트를 위해 오이와 함께 평온을 사용하여 내 평온 보고서 전체 페이지의 스크린 샷을 포함 할입니다. 보고서의 스크린 샷은 일반적으로 뷰포트 캡처 일뿐입니다. 그러나 종종 이것은 화면의 일부일 뿐인만큼 충분한 정보를 제공하지 못합니다.

평온 스크린 샷 캡처는 드라이버 구현의 일부인 것으로 나타났습니다. 대부분의 드라이버는 스크린 샷의 W3C 정의와 일치하므로 해당 드라이버는 현재 뷰포트 만 캡처합니다.

답변

2

TL; DR : 나는 W3C의 데이비드 번스 연락

FirefoxDriver

를 사용합니다. 그는 매우 도움이되었고 그의 대답은 나에게 많은 도움이되었다.

우선 FirefoxDriver는 여전히 전체 페이지의 스크린 샷을 찍습니다.

FirefoxDriver (그리고 마리오네트 우리 W3C의 webdriver 구현 단위) otherhand에 캔버스에 문서를 덤핑 및 스크린 샷을 얻기 위해 캔버스에 파이어 폭스 특정 API를 호출하여 스크린 샷을 수행 다윗은 말했다. 우리가 전체 문서를 버리기 때문에 우리는 전체 페이지 스크린 샷을 할 수 있습니다. 그러나 우리가 더 많은 서보 코드를 파이어 폭스에 넣기 시작하면 스크린 샷 변경에 액세스 할 수있는 방법이 바뀔 수 있습니다. (당신이 FFdriver를 사용할 때)

그래서 불행하게도 이것은 아마도 앞으로는 변화,하지만 지금은 좋은 ...

을이 선택 그가 준 이야기로 만들어 참조 된 이유 그는 또한 설명 웹 페이지의 렌더링 방식에 대한 정보. 나중에 우리는 대화 화면에서 스크린 샷 캡처 방법에 대한 토론의 minutes을 참조했습니다.

그의 전체 답 :

안녕

는 TL; DR; 모든 브라우저가 전체 페이지의 스크린 샷을 만드는 데 필요한 정보를 갖고있는 것은 아니기 때문에 전체 화면 캡처는 정말 힘듭니다. 긴 버전 :

올해 셀레늄 회의에서 #isDisplayed가 가끔 거짓말하는 이유와 스크린 샷과 같은 이유에 대해 talk에 대해 수행했습니다. 브라우저가 웹 페이지를 가능한 빨리로드하도록하려면 CPU 또는 GPU에서 계산을 수행하여 뷰 포트에서 렌더링해야 할 것을 연습 한 다음 렌더링합니다. 이 접근 방식 때문에 브라우저는 특정 영역의 표시 목록을 만들고 렌더링 할 "타일"을 만듭니다. 뷰포트에서 시작하여 작동합니다. 이제 브라우저는 한 번에 전체 페이지를 렌더링하지 않을 것이며 스크롤 할 때 스크롤하고 나머지를 계산할 때 위와 아래에 몇 번 정도 준비 할 것입니다.

이제 ChromeDriver와 Microsoft EdgeDriver는 모두 화면 표시 목록에서 스크린 샷을 만들고 뷰포트 만 제공하는 내부 API를 사용합니다. 이는 참조 테스트 (또는 벤더에 알려진 reftest)가 해당 사항만을 고려하기 때문입니다.그들은 둘 다 가장자리 경우 때문에 나머지 작업을할만한 가치가 있다고 느끼지 않습니다.

FirefoxDriver (및 Marionette의 W3C webdriver 구현)는 다른 한편으로는 문서를 캔버스에 덤핑하고 Canvas에서 Firefox 특정 API를 호출하여 스크린 샷을 얻는 방식으로 스크린 샷을 만듭니다. 우리가 전체 문서를 버리기 때문에 우리는 전체 페이지 스크린 샷을 할 수 있습니다. 그러나 우리가 더 많은 서보 코드를 파이어 폭스에 넣기 시작하면 스크린 샷 변경에 액세스 할 수있는 방법이 바뀔 수 있습니다.

우리는 뷰포트 정보 만 알고 있기 때문에 이미지를 결합하여 전체 페이지 스크린 샷을 얻지 않아도됩니다. ChromeDriver와 IEDriver는 모두이 작업을 수행하며 두 개발 팀은이 작업을 못되게 해킹하는 것으로 간주합니다. 왜냐하면 항상 올바르게 작동하지는 못하기 때문입니다.

나는 그것이 도움이되고 그것을 잘 설명하기를 바랍니다. 브라우저에서 렌더링 및 레이아웃 엔진이 작동하는 방식을 설명 할 때 내 talk을 시청하는 것이 좋습니다.

데이빗