4

ドライバーを使用しようとしていますSelenium Internet Explorerが、インスタンス化しようとすると壊れます:

[TestInitialize]
public void TestInitialise() {
  ieDriver = new InternetExplorerDriver();
}

次のエラーで:

[保護モードを有効にする] は、すべてのゾーンで同じ値 (有効または無効) に設定する必要があります。(NoSuchDriver)。

ここで私の問題に対する明らかな解決策を見つけました。これは、次のようにドライバーの を設定することを提案してDesiredCapabilitiesいます。

var capabilitiesInternet = new OpenQA.Selenium.Remote.DesiredCapabilities();
capabilitiesInternet.SetCapability("ignoreProtectedModeSettings", true);
IWebDriver webDriver = new InternetExplorerDriver(capabilitiesInternet);

唯一の問題は、私が見つけた最新バージョンのドライバーを使用していて、パラメーターとしてInternetExplorerDriver取るオーバーライドがないことです。DesiredCapabilities

DesiredCapabilites私が使用した例の代わりに、新しい設定方法や他の設定方法はありますか?

4

4 に答える 4

7

この設定で問題は回避できますが、微妙な問題がいくつか発生します。IE の保護モードを正しく設定していませんか? これはそれに対する正しい解決策です。

これのガイドはここに住んでいます:

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

基本的に、各ゾーンの IE で保護モードをオフにするだけです。

または、オーバーライド機能を本当に使用する必要がある場合は、次の 2 つのことを行います。

InternetExplorerOptionsクラスを使用します。プロパティの名前に注意してください。それを使用することはお勧めできません。

var options = new InternetExplorerOptions;
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
var driver = new InternetEplorerDriver(options);

または、RemoteWebDriver を使用します。これは、以下を実装するインターフェイスの実装を受け入れることができますICapabilitiesDesiredCapabilites

var capabilities = new DesiredCapabilities("internet explorer", string.Empty, new Platform(PlatformType.Windows));
capabilities.SetCapability("ignoreProtectedModeSettings", true);
var webDriver = new RemoteWebDriver(capabilities);
于 2012-11-14T17:39:41.763 に答える
2

Jim Evans (Selenium の寄稿者)によるこのブログ投稿では、この例外を取り巻く状況を詳しく説明しています。後世のためにここに引用します。

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

Internet Explorer のセキュリティ設定ダイアログ

セキュリティ レベルのスライダーを変更する必要はなく、保護モードを無効にする必要もないことに注意してください。より安全なブラウジング エクスペリエンスが提供されると思うので、すべてのゾーンで保護モードをオンにして日常的に実行しています。

注:これは、保護モードをオフにした場合にのみ機能しました。

于 2013-10-31T14:27:43.807 に答える
0

無効になっているため、システムの保護モード設定を手動で変更できませんでした。しかし、レジストリ値を更新するための以下の 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:13:48.270 に答える