2017-03-14 10 views
3

Jenkins Slave에서 일부 Selenium 테스트를 실행하는 데 문제가 있습니다. 구체적으로, 테스트를 실행하는 데 사용되는 디스플레이 해상도가 너무 작아 일부 테스트가 실패하게됩니다. Jenkins Slave와 같이 가상 시스템에서 Selenium 테스트의 디스플레이 해상도 설정

사용하여, 우리는 콘솔에 표시 높이와 너비를 기록, 디스플레이 해상도를 확인하려면

driver.manage().window().maximize(); 
System.out.println("Window height: " + driver.manage().window().getSize().getHeight()); 
System.out.println("Window width: " + driver.manage().window().getSize().getWidth()); 

이 반환 나에게 매우 이상한 해상도처럼 보인다

Window height: 784 
Window width: 1040 

합니다. 원하는 해상도는 1920 x 1080입니다.

슬레이브로 사용되는 서버는 가상 컴퓨터 (Windows Server 2012 R2)입니다. Jenkins Slave는 JNLP 에이전트를 통해 연결됩니다. 슬레이브는 "서비스가 데스크톱과 상호 작용하도록 허용"옵션이 활성화 된 상태에서 "로컬 시스템"으로 로그온하여 서비스를 실행합니다.

는 지금까지 우리는 같은 여러 가지를 시도했다 : VM은 RDP를 사용하여 원하는 디스플레이 해상도

  • 디스플레이 해상도를 설정하는 PowerShell을 사용하여 오픈 세션을두고 분리 슬레이브 연결

    • 그리고 더 ... 셀레늄을 사용하여 창 크기를 설정 VM 구성
    • 의 기본 디스플레이 해상도를 설정

    이 모든 것이 문제를 해결하지 못했습니다. 제안은 대단히 환영합니다!

  • +0

    이 경우에는 디스플레이 크기를 driver.manage(). window(). setSize (새 치수 (1920, 1080)) –

    +0

    @Kishan Patel로 설정할 수 있습니다. 나는 그것이 서버의 디스플레이 크기보다 큰 그런 식으로 크기를 설정할 수 없다고 생각한다. – jurgenvo

    +0

    지금 ubantu를 사용하고 있으므로 실제로 테스트 할 수 없습니다. 그러나 테스트 시작 전에 해상도를 설정하려면 exe 다음을 시도했다. 테스트 스크립트와 스크립트를 구분하십시오. 그것은 나를 위해 일했습니다. 시도해 볼 수 있습니까? http://tools.taubenkorb.at/change-screen-resolution/ –

    답변

    1

    마지막으로 Jenkins가 슬레이브를 Windows 서비스로 실행할 필요는 없다는 것을 깨닫고 나서 이러한 문제를 해결할 수있었습니다. 슬레이브를 시작하기 위해 JNLP 에이전트는 Jenkins에서 다운로드하여 서버에 복사 할 수 있습니다. JNLP 파일을 실행할 때 슬레이브 에이전트를 서비스로 설치하는 옵션을 선택할 수 있습니다.

    Jenkins slave agent

    이전에 우리는 노예가 서비스로 실행중인 그 이유는,이 옵션을 선택했다. 서비스를 중지하고 제거한 후에 JNLP 파일을 다시 실행하여 옵션을 선택하지 않도록했습니다.

    해결책으로는 서비스로 슬레이브를 실행할 때 원격 데스크톱 세션의 연결을 끊고 큰 해상도로 세션을 열어 두는 것이 효과적이지 않다고 제안했습니다. 그러나 그들은 기본 방식으로 슬레이브를 실행할 때 작동합니다.

    는 원격 데스크톱 세션이 일정 시간 후에 종료되지되어 있는지 확인합니다 : Session timeout properties

    희망이 누군가가 도움이!

    1

    내 경험에 따라 프로그래밍 방식으로이 문제를 해결할 수 없습니다. 테스트는이 VM 디스플레이에 실제로 액세스 할 때 마지막으로 사용한 해상도로 실행됩니다. 예를 들어, 큰 화면 모니터에서 VM을 열고 최대화하면 해당 해상도에서 테스트가 실행됩니다. 그러나 랩톱 화면에서 열고 RDP 연결을 닫으면 작은 화면 크기로 테스트가 실행됩니다. 이상하게 들리 겠지만 더 나은 해결책을 찾지 못했습니다. : D 이제 VM을 종료하기 전에 더 큰 화면에서 VM 디스플레이를 최대화하는 데주의해야합니다. 이 답변을 싫어할 지 모르겠지만 다른 솔루션에서 벗어났다는 것을 기억하십시오. ;)

    +0

    나는 이것을 실험했지만 도움이되지 못했습니다. RDP를 사용하여 VM에 로그인하고 세션 연결을 끊습니다. 젠킨스 슬레이브 서비스는 로컬 시스템 사용자로 실행되므로 내 사용자와 VM에 연결해도 아무런 효과가 없습니다. 내 자신의 사용자 계정으로 서비스가 실행 되더라도 RDP 세션의 해결 방법을 사용하지 않았습니다. – jurgenvo

    +0

    좋아요, 제 노예가 로컬 시스템이 아닌 로컬 사용자 계정으로 실행되고있었습니다. 도움이되지 않아서 죄송합니다. – acikojevic

    0

    같은 문제가 발생했습니다. 제 셀 니스 테스트는 Windows 서비스로 설치된 젠킨스 슬레이브에서 실행됩니다. Windows 7에서 "서비스와 데스크톱 상호 작용 허용"옵션을 사용하여 "로컬 시스템"계정을 사용합니다. 일부 테스트 사례는 잘못된 디스플레이 해상도로 인해 항상 실패했습니다.

    Windows VM (EXSI 서버 + VMware Fusion)의 콘솔에 로그인하고 해상도를 1400x900으로 변경하고 Windwos VM을 다시 시작합니다. 모든 것이 잘 작동합니다.