2011-09-30 3 views
2

저는 headless (Xvfb) X11에서 Firefox를 실행하기 위해 X 서버를 사용하여 웹 축소판을 잡으려고합니다.Xvfb + firefox : 어떻게 파이어 폭스 렌더링을 끝내는 지 알고 싶습니까?

나는 파이어 폭스가 완성 된 렌더링을 알기 위해 이미지 프로그램을 사용하여 창을 잡을 수있는 방법을 찾고 있습니다.

문제점 :아니요은 Firefox 렌더링이 완료 될 때를 결정합니다. 내가 아는 전부는 상태 표시 줄이 렌더링 (GUI의 Firefox에 표시된 IE)을 완료하면 "완료"의 출력을 가져야한다는 것입니다.

Firefox가 페이지 렌더링을 완료했는지 여부를 판단하는 데 사용할 수있는 사람이 누구인지 알 수 있습니까?

내가 한 일은 단지 40 초 정도 자지 만 이것은 항상 효과가 없을 수 있습니다.

는 환경 : 를 CentOS 5.7, Xvfb가, 파이어 폭스 3.6.23

쉘 명령 : 내 머리 위로 떨어져

Xvfb: 1 -screen 0 1024x768x24 & 

export DISPLAY=localhost:1.0 

DISPLAY=localhost:1.0 firefox http://www.example.com -width 1024 -height 768 

sleep 40 **[ NEED some thing to tell me if Firefox finishes rendering ]** 

DISPLAY=localhost:1.0 import -window root example.com.png 

pkill firefox 

답변

1

세 가지 방법을.

  1. window.onload에 연결하고 이미지 그래버를 실행하는 확장 프로그램을 작성하십시오.
  2. window.onload에 연결되어 경고를 발생시키는 greasemonkey 스크립트를 작성하십시오. 그러한 경고를 기다린 다음 이미지 그래버를 실행하십시오.
  3. 정지 단추의 이미지를 주기적으로 잡고 (창에 대해 알려진 좌표에 있어야 함) 해당 색을 분석하십시오. 비활성화 된 경우 렌더링이 완료됩니다.
0

나는 이것이 FF 4.x 이상으로 쉽게 수행 할 수 없다고 생각합니다. 이것은이 버전의 "기능"때문입니다. 할 수 있으면 다른 브라우저를 사용하는 것이 좋습니다 (예 : ). Opera. 아직 직접 테스트하지는 않았지만 FF로 발견 된 모든 결함이 없다고 생각합니다. 아래를 참조하십시오. 귀하의 경우에는

다음과 같은 솔루션은 효율적일 수 있습니다 :

가 화면에 어딘가에 절대 위치 지정된 사각형을 추가 약간의 그리스 몽키 스크립트를 작성합니다. 투명 빨강, 파랑,

완료하는 데 적어도 2와 같은주기를 기다리는 스크립트를 작성 (그래서, 무언가를 파랑, 빨강보고, :

페이지가 로딩 완료 3주기에서이 사각형 플래시가 보자 빨강, 파랑)을 선택하고 투명한 단계에서 올바른 타이밍으로 스크린 샷을 만듭니다.

이것은 X11 및 VNC와 유사해야합니다. 더 나은 솔루션이나 코드가 없으니 죄송합니다.

저는 비슷한 일을 해결하기 위해 쓴 EasyRFB을 사용하여 그것을 해결할 것입니다.수있는 패키지의 아이디어를 지적에 대해, BTW) 덕분에


을, 그러나 나는 당신이 읽고 쉽게 끔찍한 문서화되지 않은 코드 조각을 이해할 수 매우 desparate 천재 경우를 제외하고, 당신이 추천 아직 없습니다 임의의 웹 페이지를 캡쳐 할 수 있습니다. 이는 EasyRFB에 대한 유용한 사용 사례입니다. 전에는 이런 생각을하지 않았어. GitHub의에서 찾고

나는 Selenium 또는 웹킷 기반의 웹 스크린 샷을 복용 거기에 are 일부 solutions, that 나타났습니다. 이것은 판촉 용으로는 분명 좋지만 사용자가 웹 페이지를 보는 방법에 대한 일반적인 사용법을 다룰 수는 없습니다. 아마도

윈도우 볼로 임의의 페이지의 스크린 샷을 자동화 할 수 재미있을 것 95 IE 4, FF 1 키메라 등으로 데비안 감자 나는이에보고해야합니다)


또 다른 게시글이 Stackoverflow에 있습니다.

내가 Python (코어)의 혼합에 쓴 내가 EasyRFB 전화 뭔가, PHP (작은 웹 도우미) AJAXbash (제어 스크립트)가있다. XVnc으로 테스트되었지만 VNC으로 작동합니다. 그것은 어떻게 든 당신이 원하는 것을 할 수 있지만 조심해야합니다. 개발 코드이고, 문서화되지 않았고, 복잡하고 끔찍하게 쓰여졌으며, 잘못되었을 수도 있습니다. 당신이 그것을 찾을 수 있습니다

: 원격 GUI를 제어 할 수 있다는

  • 인터넷 연결이 극도로 느리고 매우 신뢰할 수없는 상황에서도 모바일에서 수신
  • 완전한 UI 자동화/명령 줄 별 마우스 교체
  • 브라우저 또는 일부 Windows 스파이 프로그램에서 보는 것과 대조적으로 사용자가 보는 것을 기반으로 한 자동화 된 품질 보증 테스트는 출력이 픽셀 색으로 완벽하지 않아야하는 경우에 필요합니다. 잘

아직 빠르고 효율적이지 않고 사용하기 쉽지도 않고 다른 사람도 (아직) 작성되지 않았습니다. 그것은 나를 위해 어떻게 든 작동합니다.

가 무엇을 :

  • 것이 든, 웹 중심이며 VNC 서버에 AJAX 웹 프론트 엔드를 제공합니다.
  • 은 화면 내용에 맞게 크게 압축 된 .jpg을 유지합니다.그러나이 편집기가 기본이 아닌 자기 설명과 전혀 설명하지 않습니다 -
  • 템플릿 웹 편집 edit.html 함께 할 수있는 화면의 내용에 대한 퍼지 경기 템플릿 수있는 무손실 스크린 샷을 취할 수
  • 쉘 스크립트는 이러한 템플릿이 일치하고이 작업을 수행하는 방법을 이해하는 데 도움이 수있는 몇 가지 .sh 스크립트가 있습니다 VNC
  • 에 키 누름, mousemoves의 명령과 클릭을 보낼 때까지 기다릴 수있는 기록 될 수 있습니다,하지만 난 수 없습니다입니다 정말 유용한 자료를 게시하려면 미안합니다.

아무 것도 설명되어 있지 않으며 사용법을 설명 할 수 없습니다. 너 자신을 발견하거나 잃어버린 자. 죄송합니다. 그것도 보지 마세요, 당신을 해칠 수도 있습니다.

최신 FF 버전이 제대로 화면을 업데이트하지 : 문제에


그리고 지금은이 모든 일을하면서 FF로 나타났습니다. 내 측면에서 올바르게 작동하는 것으로 알려진 마지막 버전은 FF 3.6 시리즈였으며 나중에 모두 이상한 동작이 발생합니다. 예를 들어

: 그들은 화면 내용을 업데이트하기 전에

  • 최신 버전은 현재 상태를 업데이트합니다.
  • 또한 CPU 및 메모리 요구량이 높기 때문에 화면을 업데이트하는 마지막 단계를 완료하는 데 다소 시간이 걸릴 수 있습니다. 느린 하드웨어 (예 : NSLU2)는 스피너 (Spinners) 등이 이미 "완료"상태에 이르면 몇 분이 걸릴 수도 있습니다.

그래서 심지어 "온로드()"를 감지 할 때 화면의 일부가 아직 업데이트되지 않을 수 있기 때문에 모두가 위 FF 4.x과 실패에 대한 통지 (!) 순진 그리스 몽키 솔루션을 포함한 회색이 될 스피너보고 그것은 준비가되어있다.

아마 XVnc과 관련이 있습니다. 내 스크립트에이 모든 것을 유발하는 버그가있을 수 있지만, FF 3.x은 모든 것이 옳았고 이전 버전으로 되 돌리면 즉시 나타나는 모든 문제가 해결 될 것이라고 생각합니다. (하지만 모든 문제점을 해결할 수있는 해결 방법이 이미 있습니다.하지만 해당 스크립트를 게시 할 수 없습니다. 죄송합니다.)

악화됩니다.

FF 4.x 이상은 이벤트 처리를 약간 지연시킵니다. 스크롤 막대에서 마우스를 움직이면 강조 표시된 상태로 유지되는 경우가 많습니다. 이벤트가 스크롤 막대에 미치지 못하는 것 같습니다.

정상적인 데스크톱에서는 마우스를 움직이지 않지만 내 솔루션에서는 그렇게 할 수 있습니다. 이 문제를 해결하기 위해 추가로 불필요한 마우스 이동 이벤트를 생성하여 FF로 올바른 작업을 수행 할 수 있습니다.

또한 FF로 표시되는 FF인지 FF로 표시되는 웹 페이지인지에 대해 알지 못하는 경우가 있습니다. 내가 전에 FF 3.x와 함께 이것을 본 적이. 이 문제를 해결하는 트릭은 페이지를 다시로드하는 것입니다. 점진적 화면 업데이트와 관련이있을 수 있지만 재 시도 (자동로드 버튼 클릭)가 유용합니다.

+0

세부 정보 주셔서 감사합니다. 내 필요에 대한 해결책을 찾았습니다. 나는 진주 초승달 스크린 세이버에 파이어 폭스를 사용하고 스크린 샷을 캡처하기 위해 파이어 폭스를 통해 애드온을 실행한다. 자동으로 쉘로 돌아갑니다 (스크립트를 실행하기 위해 파이썬을 사용하고 있습니다). 스크린 샷을 얻을 수있었습니다. 유일하게 단점은 파이어 폭스의 multlprocess에서 파이어 폭스 + 애드온을 사용할 수 없어 30 초에서 60 초 동안 하드 코드가 끝나고 프로세스가 완료되었다고 가정합니다. –

관련 문제