0

前述の投稿ignoreZoomSettingによると、この機能はInternetExplorerドライバーではまだ機能していないことを理解しました。

そこで、手動でブラウザレベルを100%に設定し、期待どおりに動作するテストスクリプトを実行します。

実際のニーズ:

コードからブラウザのズームレベルを100%に設定したいだけです。java.awt.Robotクラスを使用してこれを達成しようとしました。
コードを試しました

 Robot ignoreZoom = new Robot();
 ignoreZoom.keyPress(KeyEvent.VK_CONTROL);
 ignoreZoom.keyPress(KeyEvent.VK_0);
 ignoreZoom.keyRelease(KeyEvent.VK_CONTROL);

手動でブラウザのズームレベルを150%に設定して確認し、コードからIEを起動しました。

起動に使用されるコード

 DesiredCapabilities ieCapabilities = null;
 ieCapabilities = DesiredCapabilities.internetExplorer();
 driver = new InternetExplorerDriver(ieCapabilities);

上記のコードはIEを開きますが、同時にthird lineすぐ上のコードの 例外をスローします

org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 150%. It should be set to 100% (WARNING: The server did not provide any stacktrace information)

使用バージョン:

Seleniumサーバー-2.28.0OS-
Windows7
IEDriverServer-2.29.0(64ビット)
IE-8.0(64ビット)

コーディング側からズームレベルを設定する可能性はありますか?
どんな助けでもいただければ幸いです。

4

1 に答える 1

2

ここには循環依存関係があります。クラスを使用してブラウザーのズーム レベルを設定したいのですが、これはIE が起動された後にjava.awt.Robotのみ行うことができます。ただし、ブラウザーを起動する前にブラウザーのズーム レベルを 100% に設定しないと、IE を で起動することはできません。選択肢は 2 つあります。InternetExplorerDriver

まず、IE の起動時にブラウザのズーム レベル設定を無視する機能を設定できます。これによりブラウザが起動し、Robot クラスを使用して自由にズーム レベルを設定できます。ズーム レベルの設定が何らかの理由で失敗した場合、IE ドライバーが要素の座標を誤って計算し、ページ内の要素をクリックしても失敗する可能性があるため、このアプローチはお勧めしません。とにかくズームレベルを無視することに固執している場合は、次のようにします。

DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability("ignoreZoomSetting", true);
WebDriver driver = new InternetExplorerDriver(caps);

2 番目のより正しいアプローチは、IE は (Firefox や Chrome のように) インスタンスごとのプロファイルをサポートしていないため、WebDriver を使用して自動化する前に、IE が手動で構成する必要があることを単純に認識することです。その手動設定の中には、ブラウザのズーム レベルを 100% に設定するものがあります。

元の質問で言及したメーリング リストのスレッドで、実際、この機能がignoreZoomSetting機能すると述べています。うまくいかなかったと主張する投稿者は、それを不適切に使用しようとしていました。

于 2013-02-18T14:56:19.350 に答える