ソース

function loopSleep(_loopLimit,_interval, _mainFunc){
  var loopLimit = _loopLimit;
  var interval = _interval;
  var mainFunc = _mainFunc;
  var i = 0;
  var loopFunc = function () {
    var result = mainFunc(i);
    if (result === false) {
      // break機能
      return;
    }
    i = i + 1;
    if (i < loopLimit) {
      setTimeout(loopFunc, interval);
    }
  }
  loopFunc();
}

const WAIT_COUNT = 3;
function download_xml() {
  var button = targets.pop();

  var jobTitle = button.parentNode.parentNode.querySelector('a.hover_show_job_info').text.trim();
  console.log(`job name: ${jobTitle}`);

  button.click();

  loopSleep(WAIT_COUNT, 1000, function(i){
    var anchor = button.parentNode.querySelector('ul > li > a[title="Download Job definition in XML"]');
    if(anchor) {
      anchor.click();

      if(targets.length) {
        setTimeout(
          function () {
            download_xml();
          },
          '500'
        );
      }

      return false;
    } else {
      if(i == WAIT_COUNT - 1) {
        console.log(`${jobTitle} はDLできませんでした。`);
      }
    }
  })
}

var node = document.querySelectorAll('tr > td.jobname > div > button');
var targets = [];
node.forEach(function(val, i){ targets.push(val) });
console.log(`Number of all jobs: ${targets.length}`);

download_xml();

使い方

rundeckのjobリスト画面を開き、chromeのconsoleで実行する。 XMLのダウンロードを自動的に行なってくれる。