Javaで記述されたSelenium自動テストを実行するためにIEブラウザーを起動できません。 Windows 7とIE 9を使用しています。以下は私のコードです。
添付ファイルを見つけてください。
public class GoogleNews {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
ArrayList al = new ArrayList();
@Before
public void setUp() throws Exception {
//driver = new FirefoxDriver();
driver =new InternetExplorerDriver();
baseUrl = "https://news.google.co.in/";
}
@Test
public void testApple() throws Exception {
driver.get(baseUrl);
}
}
すべてのゾーンで同じセキュリティレベルを設定する必要があります。それを行うには、以下の手順に従います。
最後に、右上隅にある歯車を右クリックし、ステータスバーを有効にして、ズームレベルを100%に設定します。デフォルトのズームレベルが右下に表示されるようになりました。
スタックトレースが言うように、IEのすべてのゾーンでプロテクトモード設定を同じに設定する必要があります。ここで理由をお読みください: http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html
同じリンクからの簡単な方法:「IEでは、[ツール]メニュー(またはそれ以降のバージョンではツールバーの歯車アイコン)から[インターネットオプション]を選択します。[セキュリティ]タブに移動します。各ゾーンには、「保護モードを有効にする」というラベルの付いたチェックボックスが表示されるはずです。各ゾーンについて、チェックボックスの値を同じ値に設定します。
次のWebDriver Javaコードのスニペットは、IEを起動するために機能するはずです。コードは、IEブラウザーのすべてのゾーンの保護モード設定のセットアップを無視します。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
File file = new File("D:\\Ripon Al Wasim\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.google.com/");
IEDriverServerをダウンロードして目的の場所に抽出し、絶対パスを設定します(上記の例では「D:\ Ripon Al Wasim\IEDriverServer.exe」でした)
この問題を解決するには、2つのことを行う必要があります。
ドライバーが作成するInternet Explorerのインスタンスへの接続を維持できるように、ターゲットコンピューターにレジストリエントリを設定する必要があります。
そのマシン(自動化を実行する場所)でInternet Explorerブラウザーのいくつかの設定を変更します。
1。レジストリキー/エントリの設定:
レジストリキーまたはエントリを設定するには、「レジストリエディタ」を開く必要があります。
「レジストリエディタ」を開くには、windowsボタンキー+ rアルファベットキーを押します。これにより、「Run Window」が開き、「regedit」と入力してEnterキーを押します。
または、Windowsボタンキーを押して、スタートメニューで「regedit」と入力し、Enterキーを押します。 32/64ビットが対応する手順に従うかどうかは、使用しているOSのタイプによって異なります。
Windows 32ビット:この場所に移動-「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl」および「FEATURE_BFCACHE」キーを確認します。
Windows 64ビット:この場所-HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControlに移動し、「FEATURE_BFCACHE」キーを確認します。 FEATURE_BFCACHEサブキーが存在する場合と存在しない場合があることに注意してください。 存在しない場合は作成する必要があります。
重要:このキー内で、iexplore.exeという名前のDWORD値を値0で作成します。
2。 Internet Explorerブラウザの設定を変更します:
設定ボタンをクリックして、「インターネットオプション」を選択します。
[インターネットオプション]ウィンドウで[セキュリティ]タブに移動します
「インターネット」オプションを選択し、「保護モードを有効にする」チェックボックスをオフにして、「セキュリティレベル」を低に変更します。
ここで「ローカルイントラネット」オプションを選択し、「セキュリティレベル」を低に変更します。
「信頼済みサイト」オプションを選択し、「セキュリティレベル」を低に変更します。
IE->Tools->Internet Options
に移動します。C#NUNIT実装の場合、実際のコードを実装する方法についてまだ混乱している可能性が少ないため、実際のコードを共有したいと考えていました。明白な理由で会社がデフォルトのセキュリティ設定を変更することを許可していない可能性があるため、これを行う必要があります。幸運を!
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.IgnoreZoomLevel = true;
driver = new
InternetExplorerDriver("C:\\Users\\stdd\\Desktop\\SLL\\SLLAutomation" +
"\\Clysis\\STGSearch\\STGClaSearch\\Driver\\", options);
driver.Manage().Window.Maximize();
IEDriverServer.exeに絶対パスを使用するよりも、プロジェクトに応じて相対パスを使用することをお勧めします。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
File fil = new File("iDrivers\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", fil.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.irctc.co.in");
NighwatchJSの場合:
"ie" : {
"desiredCapabilities": {
"browserName": "internet Explorer",
"javascriptEnabled": true,
"acceptSslCerts": true,
"allowBlockedContent": true,
"ignoreProtectedModeSettings": true
}
},
方法1:
DesiredCapabilities機能= DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");
WebDriver driver= new InternetExplorerDriver(capabilities);
driver.get(baseURl);
//Identify your elements and go ahead testing...
これは明確にエラーを表示せず、ブラウザが開きますになり、URLに移動します。
しかし、これはどの要素も識別しませんであり、したがって続行できません。
どうして?エラーを単純に抑制し、IEにそのURLを開いて取得するように要求したためです。ただし、ブラウザのズームが100%の場合にのみ、Seleniumは要素を識別します。デフォルト。最終的なコードは
方法2堅牢で完全な証明方法:
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");
WebDriver driver= new InternetExplorerDriver(capabilities);
driver.get(baseURl);
driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0"));
//Identify your elements and go ahead testing...
お役に立てれば。さらに情報が必要な場合はお知らせください。