单击功能在命令脚本中不起作用

在nightwatchjs命令脚本中,我有以下代码;

exports.command = function(searchMakeQueryPage) {
  var solrMakes = searchMakeQueryPage.Make.filter(val => typeof val === 'string');
  console.log('number of sorl makes = ',solrMakes.length);
  this.elements('css selector','#bfsDesktopFilters #ddl-make option',function (dropDownmakes) {
    var numMakes = dropDownmakes.value.length;
    console.log('number of element makes = ',numMakes);
    this.assert.equal(solrMakes.length,numMakes-1);
});

  var makeResults = [];
  this.elements('css selector','#bfsDesktopFilters .search-filters__item #ddl-make > option',function (numberOfmakes) {
    numberOfmakes.value.forEach(element => {
        this.elementIdValue(element.ELEMENT,function (text) {
            makeResults.push(text.value);
        });
    });

  this.perform(function(){
    var randomMake = makeResults[Math.floor(Math.random()*makeResults.length)];
    var randomMakeHref = randomMake.replace(/\s/g,'-');
    console.log('random make = ',randomMake);
    console.log('random make href = ',randomMakeHref);
    this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
  });
  });
};

除了this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);命令外,其他方法都有效。

运行测试时,出现以下错误;

运行执行命令时出错:this.click不是函数

是这里引起问题的括号的位置还是问题的this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`)命令的位置?

我以前在nightwatchjs命令脚本中使用过this.click命令,所以我知道应该可以。

任何帮助将不胜感激。谢谢。

hhudeng 回答:单击功能在命令脚本中不起作用

您需要在正确的范围内单击运行。

方法1

exports.command = function(searchMakeQueryPage) {

  this.click = this.click.bind(this);

  this.perform(function(){
    this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
  });
};

方法2

exports.command = function(searchMakeQueryPage) {

  var self = this;

  this.perform(function(){
    self.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
  });
};

方法3

exports.command = function(searchMakeQueryPage) {

  this.perform(() => {
    this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
  });
};
本文链接:https://www.f2er.com/3116661.html

大家都在问