web-dev-qa-db-ja.com

IEでSelenium2(Webdriver)を使用してJavaブラウザーを起動できません

Javaで記述されたSelenium自動テストを実行するためにIEブラウザーを起動できません。 Windows 7とIE 9を使用しています。以下は私のコードです。

添付ファイルを見つけてください。enter image description here

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);
    }
}
55
Lingaraj R M

すべてのゾーンで同じセキュリティレベルを設定する必要があります。それを行うには、以下の手順に従います。

  1. IEを開く
  2. [ツール]-> [インターネットオプション]-> [セキュリティ]に移動します
  3. すべてのゾーン(インターネット、ローカルイントラネット、信頼済みサイト、制限付きサイト)を同じ保護モードに設定します。有効または無効は関係ありません。

最後に、右上隅にある歯車を右クリックし、ステータスバーを有効にして、ズームレベルを100%に設定します。デフォルトのズームレベルが右下に表示されるようになりました。

134
Jon Carlstedt

スタックトレースが言うように、IEのすべてのゾーンでプロテクトモード設定を同じに設定する必要があります。ここで理由をお読みください: http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html

同じリンクからの簡単な方法:「IEでは、[ツール]メニュー(またはそれ以降のバージョンではツールバーの歯車アイコン)から[インターネットオプション]を選択します。[セキュリティ]タブに移動します。各ゾーンには、「保護モードを有効にする」というラベルの付いたチェックボックスが表示されるはずです。各ゾーンについて、チェックボックスの値を同じ値に設定します。

19
niharika_neo

次の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」でした)

12
Ripon Al Wasim

この問題を解決するには、2つのことを行う必要があります。

  1. ドライバーが作成するInternet Explorerのインスタンスへの接続を維持できるように、ターゲットコンピューターにレジストリエントリを設定する必要があります。

  2. そのマシン(自動化を実行する場所)で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で作成します。

Registry Setting

2。 Internet Explorerブラウザの設定を変更します:

  • 設定ボタンをクリックして、「インターネットオプション」を選択します。

  • [インターネットオプション]ウィンドウで[セキュリティ]タブに移動します

  • 「インターネット」オプションを選択し、「保護モードを有効にする」チェックボックスをオフにして、「セキュリティレベル」を低に変更します。

  • ここで「ローカルイントラネット」オプションを選択し、「セキュリティレベル」を低に変更します。

  • 「信頼済みサイト」オプションを選択し、「セキュリティレベル」を低に変更します。

Internet Options

  • 「適用」ボタンをクリックして、警告ポップアップが表示される場合があります。「OK」ボタンをクリックして警告を表示し、「インターネットオプション」の「OK」ボタンをクリックします窓。

Save Settings

  • この後、ブラウザを再起動します。
3
Pritam Maske
  1. IE->Tools->Internet Optionsに移動します。
  2. [セキュリティ]タブに移動します。
  3. すべて(インターネット、ローカルイントラネット、信頼済みサイト、制限付きサイト)の保護モードを有効または無効にします。
3
adi_will

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();
2
Heike

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
  }
},
2
R.S

Internet ExplorerとSelenium Webdriverを開始する前に、これら2つの重要なルールを検討してください。

  • ズームレベル:デフォルト(100%)に設定する必要があります
  • セキュリティゾーンの設定:すべて同じです。セキュリティ設定は、組織の許可に従って設定する必要があります。

これを設定するには?

  • Internet Explorerに移動し、両方の作業を手動で行います。それでおしまい。秘密はありません。
  • あなたのコードを通してそれをしてください。

方法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...

お役に立てれば。さらに情報が必要な場合はお知らせください。

0
NiNa