JavaScript -WebdriverIO - 函数不将元素作为参数

JavaScript -WebdriverIO - function does not take the element as argument

我有以下功能,我用它来 运行 页面或单个组件的可访问性测试。该函数适用于页面,但当我将元素作为参数之一传递给该函数时,它会失败。我在这里做错了什么

以下工作正常

function runAccessibilityTest(fileName) {
  const fileDelimiter = ",";
  fileName = fileName.split(".")[0] + "_" + getDateTime() + ".csv";
  browser.execute(axeSource);
  const options = { runOnly: { type: "tag", values: ["wcag2aa"] } };
  let results = browser.executeAsync(function (options, done) {
    // run axe on our site
    axe.run(
      {
        include: [["css.elementpath"]],
      },
      function (err, results) {
        if (err) done(err);
        done(results);
      }
    );
  }, options);
}

但这不起作用

function runAccessibilityTest(fileName, elem) {
  const fileDelimiter = ",";
  fileName = fileName.split(".")[0] + "_" + getDateTime() + ".csv";
  browser.execute(axeSource);
  const options = { runOnly: { type: "tag", values: ["wcag2aa"] } };
  let results = browser.executeAsync(function (options, done) {
    // run axe on our site
    axe.run(
      {
        include: [[elem]],
      },
      function (err, results) {
        if (err) done(err);
        done(results);
      }
    );
  }, options);
}

我意识到我实际上并没有传递 elem 值,这就是我收到错误 elem not defined 的原因。我已将其修复如下:

function runAccessibilityTest(fileName, elem) {
    const fileDelimiter = ','
    fileName = fileName.split('.')[0] + '_' + getDateTime() + '.csv'
    browser.execute(axeSource);
    const options = { runOnly: { type: 'tag', values: ['wcag2aa'] } }
    const elemToTest = elem.selector
    let results = browser.executeAsync(function (options, elemToTest, done) {
        // run axe on our site
        axe.run({
            include: [[elemToTest]]
        },function (err, results) {
            if (err) done(err)
            done(results);
        });
    }, options, elemToTest);