web-dev-qa-db-ja.com

Amazon EC2 Windowsマシンの解像度を変更するにはどうすればよいですか?

(私はこれをここに投稿すること、ServerFaultとStackOverFlowの間で議論しました。これで解決しました。うまくいけば、それは正しい場所にあります。)

Selenium Grid2とAmazonEC2 Windowsマシン(AmazonのCloudFormation APIを使用して起動)を使用してUIテストスイートを実行します。私の質問は、そのマシンの解像度をどのように変更するのですか?

リモートで接続する場合は、リモートデスクトップを使用して解像度を指定できます。しかし、明らかにそれは解像度を恒久的に変更するものではありません。テストを実行すると、解像度が非常に小さいため、ブラウザーが要素をまとめて圧縮し、テストが失敗します。

何か案は? CloudFormationレシピに入れることができるものはありますか? AMIを作成する前に画像にできることはありますか?

Screenshot of Device Manager

ありがとう。

9
Joel

免責事項:TightVNCは安全ではないため、セキュリティが問題になる場合は、別のアプローチを見つける必要があるかもしれません。全体のプロセスは数分しかかからないので、セキュリティホールは小さいですが、それでもそこにあります。

  1. コンソールにログインできるように、EC2インスタンスにTightVNCサーバーをインストールします
  2. すべてのユーザーリモートデスクトップセッションを切断し、セッションをコンソールに戻します
  3. TightVNCビューアーを使用してEC2インスタンスコンソールにログインし、その接続に対してポート5900が開いていることを確認します
    • デスクトップを右クリックして、「画面解像度」を選択します
    • 「詳細設定」を選択します
    • 「すべてのモードを一覧表示」を選択します
    • より高い解像度を選択してください
4
Kenny Trytek

2つのレジストリ値を変更することにより、画面の解像度を変更できます。これらの2つの値は次のとおりです。HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.XResolutionHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.YResolutionここで、GUIDはランダムに生成されたGUIDです。

XResolutionとYResolutionの値は、16進数であれば、実際に指定できます。

注:CRTモニターの場合、不条理な解像度を指定すると、モニターが損傷する可能性があります。 LCDモニターの場合、モニターにユーザーインターフェイスが表示されなくなる可能性があります。画面の解像度を変更する良い方法は、画面の幅を埋めるピクセル数を書き留めることです。 (これはXResolutionです)および画面の高さに必要なピクセル数(YResolution)。Windows計算機(Server Coreでは使用できません。別のコンピューターまたはハードウェアの高度な計算機を見つける必要があります)は、次の簡単な方法を提供します。 10進数を16進数に変換します。これらの値を使用して、対応するレジストリ値を変更できます。再起動すると、希望する画面解像度が現実に適合します。

モニターで使用される色深度は、次のレジストリ値で取得されます。HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Video\GUID\0000\DefaultSettings.BitsPerPel私のボックスでは、この16進値は0x00000008(8)に設定されていました。これは、画面が8ビットの色深度を使用していることを意味します。 (256色)16ビット(0x00000010)に変更すると、65536色(ハイカラー)が表示されます。通常使用できる他の値は、24ビット(0x00000018)と32ビット(0x00000020)です。

ソース

1
paradroid

上記の@ kenny-trytekの回答と自動ログインの設定を組み合わせて、これを機能させることができました。

VNC解像度は現在のユーザーに対してのみ設定されると思うので、自動ログインを設定すると、このユーザーが開いているセッションを確保できます。

自動ログインの設定 https://support.Microsoft.com/en-us/kb/324737

次に、ユーザーのStart Upフォルダーに、Seleniumノードプロセスを開始するためのショートカットまたはbatファイルを提供します。

1
porto88

私は上記のすべてを試しましたが失敗しました。単純な私の状況に固有の解決策を見つけました..WindowsPowerShellを使用してください。

powerShellスクリプトを作成しました

Set-DisplayResolution -Width 1920 -Height 1080 -Force

それをresolution.ps1と名付けます

c:\ myTestFolderに保存

以下のようにコマンドラインから実行します.....(私のスクリプトはバッチファイルによって駆動されます)

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

RDPを使用してAWSWindowsでヘッドレス画面の解像度を設定する方法は次のとおりです。

  • rdp_localという新しいユーザーを作成します
  • 指定された解像度で指定されたユーザーアカウント(Seleniumなど)にRDPの起動スクリプトを作成します
  • ファイアウォールルールを追加して、RDPポート3389を開きます
  • 再起動時にrdp_localとしてログインするように自動ログオンを構成する

自動ログオンにはユーザー名とパスワードが必要であり、パスワードは暗号化されずにWindowsレジストリHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogonに保存されることに注意してください。

Amazon Windows Server 2012 R2AMIでテスト済み。

上記を実行するChefクックブックは次のとおりです。 https://github.com/dhoer/chef-windows_screenresolution

0
Dennis Hoer