我想使用传递给另一个函数的局部变量或与任何变量进行比较。示例:
browser
.waitForElementVisible("//div[@class='col-xs-7 alignR uppercase']//strong", 5000, function () {
browser
.pause(500)
.getText("//div[@class='col-xs-7 alignR uppercase']//strong", function(result){
console.log('++++++++++++++',result.value);
let numb1 = result.value;
numb = numb1.match(/\d/g);
numb = numb1.join("");
console.log("value=", numb1);
return numb1;
})
})
.element('xpath', "(//div[@class='row']//div[@class='col-xs-7 alignR'])[1]", function (present) {
console.log(present);
if (present.status == 0) {
//arrange
browser
.pause(500)
.getText("(//div[@class='row']//div[@class='col-xs-7 alignR'])[1]", function (result) {
console.log("string", result.value);
let numb = result.value;
numb = numb.match(/\d/g);
numb = numb.join("");
console.log("value=", numb);
return numb;
})
}
})
我想比较numb / numb1或获取两者的总数。
答案 0 :(得分:0)
好吧,如果您想保持测试结构不变(非常可疑!),那为什么不声明一些测试文件全局变量呢?
let numb, numb1;
browser
.waitForElementVisible("//div[@class='col-xs-7 alignR uppercase']//strong", 5000, function () {
browser.pause(500)
.getText("//div[@class='col-xs-7 alignR uppercase']//strong", function(result) {
numb1 = result.value;
// > do more stuff here if necessary <
});
})
.element('xpath', "(//div[@class='row']//div[@class='col-xs-7 alignR'])[1]", function (present) {
console.log(present);
if (present.status == 0) {
browser.pause(500)
.getText("(//div[@class='row']//div[@class='col-xs-7 alignR'])[1]", function (result) {
numb = result.value;
console.log(`numb & numb1 values: ${numb} & ${numb1}`);
// > do more stuff with num & numb1 if necessary <
});
}
});
话虽如此... 一种更好的方法是分解您的重要步骤并将逻辑提取到单一功能中,因此您可以使用:
考虑到您当前的设置,我们考虑添加以下自定义命令来提取num1
:
❒getNumb1.js (应位于test/custom_commands/
中):
exports.command = function(callback) {
this.perform((done) => {
this.api.waitForElementVisible("//div[@class='col-xs-7 alignR uppercase']//strong", 5000, () => {
this.api.pause(500);
this.api.getText("//div[@class='col-xs-7 alignR uppercase']//strong", (result) => {
let numb1 = result.value;
// > do some other stuff here if necessary <
callback(numb1);
});
});
});
};
类似地,添加另一个自定义命令文件( getNumb.js ),该文件将返回numb
的值。 然后 ,请在测试文件中使用二者,并根据需要进行数据处理或数据检查(断言):
let numb = browser.getNumb();
let numb1 = browser.getNumb1();
// > do something with numb & numb1 here <
❖!注意: 上面给出的示例纯粹是有教义的!我不建议 创建包含测试特定逻辑的
custom_commands
。仅通用和/或实用程序方法(例如: closeGDPR , addCookie , getHttpCode 等)应位于custom_commands
文件夹中。
因此 ,在当前设置中,最好在getNumb和getNumb1
之类的命令>页面对象的“命令” 部分。