我们在网站一页上的元素中定义变量,单击“编辑”按钮将打开下一页。在此页面中,我们需要断言上一页捕获的数据与第二页上显示的数据匹配。我们的问题是,一旦测试移至第二页,它就无法调用我们在第一页上定义的变量。以下是我们的代码段:
it ('Student ID Validation', function(){
// get rows
var rows = tableData_Dashboard.all(by.tagName("tr"));
// get cell values
var cells = rows.all(by.tagName("td"));
var Student_ID = cells.get(0).getText().then(function(SID){
console.log(SID);
});
Edit_Button_1.click();
browser.sleep(2000);
expect(Student_ID_on_Reg_Page.getAttribute('value')).toEqual(Student_ID);
执行后,出现以下错误
Message:
Expected '123456' to equal undefined.
我们怀疑这可能是由于异步引起的,但事实并非如此。测试在存储了第1页的变量后将移动到第2页,因此我们不知为什么会发生这种情况。我们如何解决这个问题并将变量用于断言目的?
答案 0 :(得分:2)
问题是您已经指定了then()
回调函数,在该回调函数中您只记录了该值而没有返回它:
var Student_ID = cells.get(0).getText().then(function(SID){
console.log(SID);
});
一无所获,Student_ID
将成为一个承诺,将化为undefined
。
您需要退货:
var Student_ID = cells.get(0).getText().then(function(SID){
console.log(SID);
return SID;
});
或者,完全删除自定义回调:
var Student_ID = cells.get(0).getText();
答案 1 :(得分:0)
实际上,以下部分引起了问题。移除此部分后,测试即可正常进行。
.then(function(SID){
console.log(SID);
});