为了解释标题。Selenium RC一直坚持认为
已经计划关闭系统
并因此拒绝进行自动化测试。.我可以理解这里的逻辑,我的意思是,如果您认为世界将因核大屠杀而结束,您将不做作业。
但是,这不是冷战,当我检查一些基本内容(例如使用shutdown \a
,完成完全重新启动)时,我发现实际上并非如此!
我如何才能说服硒世界将不会终结,它应该完成我告诉它的工作?
N.B.在这里,硒已经“拒绝”以初始化IE的任何实例,并且无论单击Yes
还是No
,硒都将继续挂起直到超时。我正在使用NUnit,c#/。net4.0来控制测试。
最佳答案
为了解决这个问题,我用下面的修补版本作为user extension替换了默认的“ 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”内部发生“已安排系统关闭”错误。我还发现,发生错误后刷新硒测试运行器窗口将“重新启动”测试而没有错误。因此,我使用以下try catch语句修补了“ runSeleniumTest”,以便在“ openSeparateApplicationWindow”中出现错误时重新加载测试运行器窗口:
try{
testAppWindow = openSeparateApplicationWindow('Blank.html', true);
}
catch (e) {
window.onunload = function () { };
window.location.reload();
return;
}
我还将my blog post用于硒用户扩展的更具体示例
关于c# - Selenium RC让人想起“世界末日”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17528097/