2

タイトルを説明するには..Selenium RCはそれを主張し続けます

システムのシャットダウンはすでにスケジュールされています

このため、自動化されたテストの実施を拒否しています..ここでの論理は理解できます。つまり、世界が核のホロコーストで終わると思ったら、宿題をするつもりはないということです...

ただし..これは冷戦ではなく、いくつかの基本的なことを調べると (使用shutdown \a、完全な再起動の完了など)、実際にはそうではないことがわかります!

ここに画像の説明を入力

世界が終わらないこと、そしておそらく私が言っている仕事をするべきであることをセレンに納得させるにはどうすればよいですか?

YesNB ここで、セレンは IE のインスタンスの初期化を「拒否」しており、やをクリックしても、タイムアウトするまでハングし続けますNo。テストを制御するために、NUnit、c#/.net4.0 を使用しています。

4

2 に答える 2

1

これを修正するために、デフォルトの「runSeleniumTest」関数を、ユーザー拡張機能として以下のパッチが適用されたバージョンに置き換えました。

function runSeleniumTest() {
  runOptions = new RemoteRunnerOptions();
  var testAppWindow;

  if (runOptions.isMultiWindowMode()) {
    try{
      testAppWindow = openSeparateApplicationWindow('Blank.html', true);
    }
    catch (e) {
      window.onunload = function () { };
      window.location.reload();
      return;
    }
  } else if (sel$('selenium_myiframe') != null) {
    var myiframe = sel$('selenium_myiframe');
    if (myiframe) {
      testAppWindow = myiframe.contentWindow;
    }
  }
  else {
    proxyInjectionMode = true;
    testAppWindow = window;
  }
  selenium = Selenium.createForWindow(testAppWindow, proxyInjectionMode);
  if (runOptions.getBaseUrl()) {
    selenium.browserbot.baseUrl = runOptions.getBaseUrl();
  }
  if (!debugMode) {
    debugMode = runOptions.isDebugMode();
  }
  if (proxyInjectionMode) {
    LOG.logHook = logToRc;
    selenium.browserbot._modifyWindow(testAppWindow);
  }
  else if (debugMode) {
    LOG.logHook = logToRc;
  }
  window.selenium = selenium;

  commandFactory = new CommandHandlerFactory();
  commandFactory.registerAll(selenium);

  currentTest = new RemoteRunner(commandFactory);

  var doContinue = runOptions.getContinue();
  if (doContinue != null) postResult = "OK";

  currentTest.start();
}

「openSeparateApplicationWindow」内で「システムのシャットダウンは既にスケジュールされています」というエラーが発生していることがわかりました。また、エラーが発生した後に Selenium テスト ランナー ウィンドウを更新すると、エラーなしでテストが「再開」されることもわかりました。したがって、「openSeparateApplicationWindow」にエラーがある場合にテスト ランナー ウィンドウがリロードされるように、次の try catch ステートメントで「runSeleniumTest」にパッチを適用しました。

try{
  testAppWindow = openSeparateApplicationWindow('Blank.html', true);
}
catch (e) {
  window.onunload = function () { };
  window.location.reload();
  return;
}

Selenium ユーザー拡張機能のより具体的な例については、ブログ投稿も使用しました

于 2013-12-11T17:28:08.917 に答える
0

この場合、Selenium は何もしません。これは、何もできないようにしている IE HTA エージェント (組み込みの Windows プロセス) です。おそらく、マシンを再起動するとうまくいくでしょうか?将来の再起動が予定されている保留中の Windows 更新プログラムがあるようです。

于 2013-07-16T15:15:41.120 に答える