Como altero a resolução de uma máquina Windows Amazon EC2?

9

(Eu debati entre postar isso aqui, ServerFault e StackOverFlow. Resolvi fazer isso. Espero que esteja no lugar certo.)

Executamos nosso conjunto de testes de interface do usuário usando o Selenium Grid 2 com uma máquina Windows do Amazon EC2 (iniciada com o uso das APIs CloudFormation da Amazon). Minha pergunta é: como altero a resolução dessa máquina?

Se eu fizer o controle remoto, posso especificar a resolução usando a Área de Trabalho Remota. Mas, obviamente, isso não altera permanentemente a resolução. Quando executamos nossos testes, a resolução é tão pequena que o navegador junta os elementos e causa falha nos testes.

Alguma ideia? Existe algo que eu possa colocar na receita do CloudFormation? Existe algo que eu possa fazer com a imagem antes de criar a AMI?

Captura de tela do Gerenciador de dispositivos

Obrigado.

Joel
fonte
11
Interessante. Imagino que deve ser uma instância padrão, portanto, nenhuma placa gráfica CUDA foi atribuída à instância. Então você está trabalhando com uma placa gráfica virtual padrão. Como é no gerenciador de dispositivos? Você pode postar uma captura de tela? Você pode forçá-lo mais alto rdp-ing para o console:mstsc.exe /console
Paul
@Paul, adicionei uma captura de tela. É uma instância padrão. Windows Server R2. Obrigado.
Joel #
@ Joel, você já resolveu isso? Eu tenho tentado encontrar maneiras de fazer isso por vários dias, incluindo o uso das respostas abaixo, mas sem sorte até agora. Na reinicialização ou criação da AMI (mesmo as que tiveram as respostas aplicadas), elas ainda começam em 1024x768.
21414 Sean

Respostas:

4

Isenção de responsabilidade: o TightVNC não é seguro; portanto, se a segurança é um problema, talvez você precise encontrar uma abordagem diferente. Todo o processo levará apenas alguns minutos; portanto, a brecha na segurança é pequena, mas ainda assim existe.

  1. Instale o servidor TightVNC na instância do EC2 para poder efetuar login no console
  2. Desconecte todas as sessões da área de trabalho remota do usuário e retorne a sessão ao console
  3. Use o TightVNC Viewer para efetuar login no console da instância do EC2, garantindo que a porta 5900 esteja aberta para essa conexão
    • Clique com o botão direito na área de trabalho e selecione "Resolução da tela"
    • Selecione "Configurações avançadas"
    • Selecione "Listar todos os modos"
    • Selecione uma resolução maior
Kenny Trytek
fonte
Isso me permitiu mudar minha resolução, que eu acreditava que resolveria meu problema real, mas não o fez. Meus testes de selênio que estão sendo executados automatizados no meu servidor windows 2008 ec2 por meio do agendador de tarefas ainda estão sendo executados em uma resolução pequena. Mesmo após a atualização com o acima, eles estão sendo executados em uma resolução menor. Sim, as janelas estão definidas para maximizar a resolução na configuração do selênio.
Copie e cole
1

Você pode alterar a resolução da tela modificando dois valores do registro. Esses dois valores são: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolution HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolutionOnde GUID é um GUID gerado aleatoriamente.

Na verdade, você pode especificar qualquer valor XResolution e YResolution, desde que sejam hexadecimais.

Nota: No caso de um monitor CRT, especificar uma resolução absurda pode danificá-lo. No caso de um monitor LCD, seu monitor pode não mostrar mais nenhuma interface do usuário. Uma boa maneira de alterar a resolução da tela é anotar a quantidade de pixels com a qual você deseja preencher a largura da tela (este é o XResolution) e a quantidade de pixels que você deseja na altura da tela (o YResolution). A calculadora do Windows (não disponível no Server Core, você precisará encontrar outro computador ou uma calculadora avançada de hardware) oferece uma maneira fácil de converter valores decimais em valores hexadecimais. Você pode usar esses valores para modificar os valores correspondentes do Registro. Uma reinicialização fará com que sua resolução de tela preferida atenda à realidade.

A profundidade de cores usada no seu monitor é capturada no seguinte valor do registro: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPelNa minha caixa, esse valor hexadecimal foi definido como 0x00000008 (8), o que significava que minha tela usava uma profundidade de cores de 8 bits. (256 cores) A ​​alteração para 16 bits (0x00000010) mostrará 65536 cores (cores altas) Outros valores normalmente disponíveis são 24 bits (0x00000018) e 32 bits (0x00000020).

Fonte

paradroid
fonte
Não tenho as DefaultSettings. * Chaves de resolução em qualquer um dos GUID.0000. Eu acho que é porque só tem dispositivos virtuais. Posso adicionar essa chave a cada um deles? Isso funcionaria?
Joel #
@ Joel: eu duvido. Não existe uma ramificação de 'Vídeo'? Eu tenho uma instância do Server Core 2008 R2 no EC2, então vou dar uma olhada nessa noite.
Paradroid
Sim, acho que não. Pensei em perguntar de qualquer maneira. Continuarei procurando soluções. Me avise se você descobrir algo. Obrigado.
Joel
Também não tenho o DefaultSettings. * No meu registro. Eu não conseguia nem tentar esta solução. Parece que poderia ajudar alguns, mas não todos.
Copie e cole
1

Consegui fazer isso funcionar usando uma combinação da resposta do @ kenny-trytek acima e configurando o login automático.

Eu acho que a resolução VNC é definida apenas para o usuário atual, portanto, a configuração do login automático garante que esse usuário tenha uma sessão aberta.

Configuração de logon automático https://support.microsoft.com/en-us/kb/324737

Em seguida, na pasta Inicialização do usuário, forneça um atalho ou arquivo bat para iniciar o processo do nó selênio.

porto88
fonte
11
Cite as partes essenciais da resposta nos links de referência, pois a resposta pode se tornar inválida se as páginas vinculadas forem alteradas.
DavidPostill
1

Eu tentei tudo acima de tudo e falhei. Encontrei uma solução única para a minha situação que era simples ..use windows power-shell.

escreveu o script power-shell

Set-DisplayResolution -Width 1920 -Height 1080 -Force

chame-o de resolution.ps1

salvo em C: \ myTestFolder

e execute-o na linha de comando como abaixo ..... (meus scripts são conduzidos por arquivos em lote)

WindowsPowerShell\v1.0\powershell.exe C:\myTestFolder\resolution.ps1
1234
fonte
0

Aqui está como eu defino a resolução da tela sem cabeça no AWS Windows usando o RDP:

  • crie um novo usuário chamado rdp_local
  • crie um script de inicialização para o RDP em uma conta de usuário especificada (por exemplo, selênio) na resolução especificada
  • adicione uma regra de firewall para abrir a porta RDP 3389
  • configure o logon automático para efetuar login como rdp_local na reinicialização

Observe que o logon automático requer um nome de usuário e senha e que a senha é armazenada não criptografada no registro do Windows HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon do Windows.

Testado na AMI do Amazon Windows Server 2012 R2.

Aqui está um livro de receitas do Chef que faz o seguinte: https://github.com/dhoer/chef-windows_screenresolution

Dennis Hoer
fonte
ATUALIZAÇÃO: Eu recomendaria o uso do github.com/dhoer/choco-screen-resolution#screen-resolution para definir a resolução da tela em máquinas Windows usadas para testes de selênio. Ela não requer drivers para instalar e auto-login é seguro (sem senhas em texto simples)
Dennis Hoer