断言在页面对象中不可用? - 无法读取未定义的 属性 'ok'。
Assert not available in page object? - Cannot read property 'ok' of undefined.
我有一个小型守夜测试,它正在读取价格并检查该值是否为正数。
browser.getText ('.price', function(result) {
var myPrice = Number(result.value.replace('-.','').trim());
browser.assert.ok(isPositive(myPrice), 'price is a positive number');
});
如果我将它直接放在测试本身中,它会工作得很好,但是当我将它作为一个函数移动到我的页面对象文件中时(像这样):
checkPrice: function (){
this.expect.element('@price').text.to.be.visible.before(1000);
this.getText ('@price', function(result) {
var myPrice = Number(result.value.replace('-.','').trim());
this.assert.ok(isPositive(myPrice), 'price is a positive number');
});
},
它抛出这个错误:"Cannot read property 'ok' of undefined"。我尝试使用 assert.equal
来更改我的支票,但它给出了相同的错误,即 属性 不可访问。
我在这里 () 了解到 assert
作用域可能存在一些问题,因为它是 client
的成员,但是如果我使用 client
而不是 this
它再也看不到断言了:“无法读取未定义的 属性 'assert'”.
我还读到 this
有时使用起来很棘手,但我的 javascript 编程技能有限,所以从这个角度来看,我可能会错过一些东西。
你能给我一个建议,为什么这不起作用,我该如何尝试修复它?
this
进入内部函数作用域后发生变化,所以需要保存对它的引用。
checkPrice: function (){
var _this = this;
this.expect.element('@price').text.to.be.visible.before(1000);
this.getText ('@price', function(result) {
var myPrice = Number(result.value.replace('-.','').trim());
_this.assert.ok(isPositive(myPrice), 'price is a positive number');
});
},
我有一个小型守夜测试,它正在读取价格并检查该值是否为正数。
browser.getText ('.price', function(result) {
var myPrice = Number(result.value.replace('-.','').trim());
browser.assert.ok(isPositive(myPrice), 'price is a positive number');
});
如果我将它直接放在测试本身中,它会工作得很好,但是当我将它作为一个函数移动到我的页面对象文件中时(像这样):
checkPrice: function (){
this.expect.element('@price').text.to.be.visible.before(1000);
this.getText ('@price', function(result) {
var myPrice = Number(result.value.replace('-.','').trim());
this.assert.ok(isPositive(myPrice), 'price is a positive number');
});
},
它抛出这个错误:"Cannot read property 'ok' of undefined"。我尝试使用 assert.equal
来更改我的支票,但它给出了相同的错误,即 属性 不可访问。
我在这里 (assert
作用域可能存在一些问题,因为它是 client
的成员,但是如果我使用 client
而不是 this
它再也看不到断言了:“无法读取未定义的 属性 'assert'”.
我还读到 this
有时使用起来很棘手,但我的 javascript 编程技能有限,所以从这个角度来看,我可能会错过一些东西。
你能给我一个建议,为什么这不起作用,我该如何尝试修复它?
this
进入内部函数作用域后发生变化,所以需要保存对它的引用。
checkPrice: function (){
var _this = this;
this.expect.element('@price').text.to.be.visible.before(1000);
this.getText ('@price', function(result) {
var myPrice = Number(result.value.replace('-.','').trim());
_this.assert.ok(isPositive(myPrice), 'price is a positive number');
});
},