2

为了解释标题.. Selenium RC 一直坚持认为

已安排系统关闭

并因此拒绝进行自动化测试。我可以理解这里的逻辑,我的意思是,如果您认为世界将以核浩劫结束,您就不会做功课...

但是..这不是冷战,当我检查几个基本的东西(例如使用shutdown \a,完成完全重启)时,我发现事实并非如此!

在此处输入图像描述

我怎样才能让 selenium 相信世界不会终结,它可能应该完成我告诉它的工作?

注意这里,selenium 已经“拒绝”初始化任何 IE 实例,并且将继续挂起直到超时,无论单击YesNo. 我正在使用 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 测试运行器窗口会“重新启动”测试而不会出现错误。因此,我使用以下 try catch 语句修补了“runSeleniumTest”,以便在“openSeparateApplicationWindow”中出现错误时重新加载测试运行程序窗口:

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 回答