56

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

添付ファイルを見つけてください。ここに画像の説明を入力してください

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);
    }
}
4

10 に答える 10

149

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

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

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

于 2013-02-19T12:25:13.670 に答える
20

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

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

于 2013-02-19T10:42:29.750 に答える
12

次のWebDriverJavaコードのスニペットは、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」でした)。

于 2013-02-20T04:56:57.243 に答える
4

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");          
于 2015-05-18T10:48:34.403 に答える
3
  1. に移動しIE->Tools->Internet Optionsます。
  2. [セキュリティ]タブに移動します。
  3. すべて(インターネット、ローカルイントラネット、信頼済みサイト、制限付きサイト)の保護モードを有効/無効にします。
于 2015-09-01T10:34:36.200 に答える
3

実際のコードを共有したかったのは、それを実装する方法についてまだ混乱している可能性があるためです。これは、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();
于 2019-05-10T20:33:18.280 に答える
2

NighwatchJSの使用:

"ie" : {
  "desiredCapabilities": {
    "browserName": "internet explorer",
    "javascriptEnabled": true,
    "acceptSslCerts": true,
    "allowBlockedContent": true,
    "ignoreProtectedModeSettings": true
  }
},
于 2016-09-05T14:54:42.107 に答える
2

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

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

  2. そのマシン(自動化を実行したい場所)でInternetExplorerブラウザーのいくつかの設定を変更します。

1。レジストリキー/エントリの設定:

  • レジストリキーまたはエントリを設定するには、「レジストリエディタ」を開く必要があります。

  • 「レジストリエディタ」を開くには、ウィンドウボタンキー+アルファベットキーを押して「ウィンドウの実行」を開き、「regedit」と入力してEnterキーを押します。

  • またはWindowsボタンキーを押し、スタートメニューで「regedit」と入力してEnterキーを押します。OSの種類に応じて、32/64ビットが対応する手順に従うかどうかを確認します。

Windows 32ビット: この場所に移動します-「HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ InternetExplorer \ Main \ FeatureControl」、「FEATURE_BFCACHE」キーを確認します。

Windows 64ビット: この場所に移動します-HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControlそして、「FEATURE_BFCACHE」キーを確認します。 FEATURE_BFCACHEサブキーは存在する場合と存在しない場合があり、存在しない場合は作成する必要があることに注意してください。

重要:このキー内に、値0のiexplore.exeという名前のDWORD値を作成します。

レジストリ設定

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

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

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

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

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

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

インターネット設定

  • 次に、[適用]ボタンをクリックすると、警告ポップアップが表示される場合があります。[OK]ボタンをクリックして警告を表示し、[インターネットオプション]ウィンドウの[OK]ボタンをクリックします。

設定を保存する

  • この後、ブラウザを再起動します。
于 2018-04-03T13:40:42.197 に答える
1

保護モードの設定が無効になっているため、システムで手動で変更できませんでした。しかし、レジストリ値を更新するための以下のVBAスニペットは、私にとってはうまくいきました(これを試す前に、レジストリの変更に関する組織の制限に注意してください)

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."

Set ScriptMe=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")

'Disable protected mode for local intranet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for trusted pages'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for internet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

'Disable protected mode for restricted sites'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

msgbox "Protected Mode Settings are updated"

上記のコードをコピーしてメモ帳に貼り付け、.vbs拡張子を付けて保存し、ダブルクリックするだけです。

ここで、自動化スクリプトをもう一度実行してみてください

于 2020-08-23T06:10:20.693 に答える
0

InternetExplorerとSeleniumWebdriverを使い始める前に、これら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を開いて取得するように依頼したためです。ただし、Seleniumは、ブラウザのズームが100%の場合にのみ、要素を識別します。デフォルト。したがって、最終的なコードは次のようになります

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

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

于 2016-11-25T09:39:02.963 に答える