单击功能在命令脚本中不起作用
Click function not working within command script
在我的 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}"]`);
命令外,它有效。
当我运行测试时,出现以下错误;
运行ning 执行命令时出错:this.click 不是函数
这里的问题是括号的定位,还是 this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`)
命令的定位?
我之前在 nightwatchjs 命令脚本中使用过 this.click
命令,所以我知道它应该是可行的。
如有任何帮助,我们将不胜感激。谢谢
您需要 运行 在正确的范围内点击。
方法一
exports.command = function(searchMakeQueryPage) {
this.click = this.click.bind(this);
this.perform(function(){
this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
});
};
方法二
exports.command = function(searchMakeQueryPage) {
var self = this;
this.perform(function(){
self.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
});
};
方法三
exports.command = function(searchMakeQueryPage) {
this.perform(() => {
this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
});
};
在我的 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}"]`);
命令外,它有效。
当我运行测试时,出现以下错误;
运行ning 执行命令时出错:this.click 不是函数
这里的问题是括号的定位,还是 this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`)
命令的定位?
我之前在 nightwatchjs 命令脚本中使用过 this.click
命令,所以我知道它应该是可行的。
如有任何帮助,我们将不胜感激。谢谢
您需要 运行 在正确的范围内点击。
方法一
exports.command = function(searchMakeQueryPage) {
this.click = this.click.bind(this);
this.perform(function(){
this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
});
};
方法二
exports.command = function(searchMakeQueryPage) {
var self = this;
this.perform(function(){
self.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
});
};
方法三
exports.command = function(searchMakeQueryPage) {
this.perform(() => {
this.click(`#bfsDesktopFilters #ddl-make option[value="${randomMake}"]`);
});
};