Selenium을 통해 SSH를 통해 원격 컴퓨터(Ubuntu 16.04 실행)에서 헤드리스 Firefox를 실행하려고 합니다. 그러나 이로 인해 "오류: GDK_BACKEND가 사용 가능한 모니터와 일치하지 않습니다." 오류가 발생합니다. 내 호스트 컴퓨터는 Windows를 실행합니다. 그래픽 출력을 보고 싶지 않습니다. 셀레늄 테스트에만 사용됩니다.
X 가상 프레임 버퍼를 사용하여 가상 드라이버 역할을 합니다.
Xvfb :10 -screen 0 1024x768x16 &
이 특별한 경우에는 DISPLAY 환경 변수를 값 10으로 내보냈습니다.
내가 어디서 잘못됐나요?
편집: xvbf를 실행한 후 SSH를 통해 명령줄에서 "sudo firefox"를 실행하면 오류가 발생하지 않습니다. 이 오류는 셀레늄을 통해 Firefox를 실행할 때만 발생합니다.
자세한 내용은:-
Selenium을 통해 Firefox를 호출하고 있습니다. 셀레늄 독립형 서버에서 제공되는 정확한 오류는 다음과 같습니다.
17:52:55.218 INFO - Executing: [new session: Capabilities [{browserName=firefox, platform=ANY, firefox_profile=UEsDBBQAAAAAAJuOD0nf9RXUMgAAA...}]])
17:52:55.230 INFO - Creating a new session for Capabilities [{browserName=firefox, platform=ANY, firefox_profile=UEsDBBQAAAAAAJuOD0nf9RXUMgAAA...}]
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: GDK_BACKEND does not match available displays
답변1
분명히 이는 Firefox 48과 Selenium 사이의 비호환성 때문입니다(Selenium 확장은 Firefox 48에서 서명되지 않고 Firefox 48은 서명된 확장만 실행합니다). 내 사용 사례는 브라우저에 국한되지 않기 때문에 Chrome만 사용합니다.
답변2
저는 Firefox를 사용하여 이 문제를 해결했습니다. 단계는 다음과 같습니다.
- Firefox를 49.0에서 46.0으로 다운그레이드
- 명령을 통해 XVFB 설치
sudo apt-get install xvfb
- 다음 명령을 사용하여 Selenium을 실행하십시오.
xvfb-run java8 -jar selenium-project.jar
내 Selenium 버전은 2.53.1
Ubuntu 14.04입니다.
답변3
DISPLAY
왜 env 변수 메소드가 작동하지 않는지 모르겠지만 , xvfb-run <command>
(내 경우에는 xvfb-run npm test
) 그것을 사용하도록 전환했는데 훌륭하게 작동합니다! :)
답변4
나는 이미 여기에 대답했습니다. https://stackoverflow.com/questions/50250580/error-gdk-backend-does- cro를 사용하여 셀레늄을 실행하는 일치 항목이 없습니다.