У меня есть пара комментариев по этому поводу.
Во-первых, ваша угловая ошибка в том, что объявленная вами функция Row_number находится за пределами любого блока it и поэтому выполняется до запуска beforeAll.
Далее не нужно использовать функцию tableData, так как замена ее параметра n на счетчик i из цикла будет иметь тот же эффект.
Наконец, если ваш код должен пройти несколько страниц для выполнения этих тестов, вероятно, будет гораздо лучше использовать подход, основанный на данных, и писать отдельные файлы данных для каждого теста. Изменяются ли значения строк в этих таблицах или они будут согласованы?
Обновление:
Этот подход может выглядеть примерно так, но я не проверял это.
beforeAll(function () {
browser.driver.manage().window().maximize();
browser.get(globalVariables.loginMain);
globalVariables.Email_Input_box.sendKeys(globalVariables.Demo_User);
globalVariables.Password_Input_Box.sendKeys(globalVariables.Demo_PWD);
globalVariables.Submit_Button.click();
browser.wait(EC.invisibilityOf(globalVariables.Submit_Button), 25000, 'submit button is not disappearing yet');
});
it('test it', async () => {
globalVariables.tableData_Dashboard.all(by.tagName("tr")).forEach((row) => {
var cells = row.all(by.tagName("td"));
var Student_ID = cells.get(0).getText().then(function (SID) {
console.log(SID);
return SID;
});
expect(Student_ID.toEqual('Something'), 'should return the data fo the first cell');
const Button = globalVariables['Edit_Button_' + n];
// console.log(Button)
expect(Button.isDisplayed(), 'should show the button in this row').toBe(true);
Button.click();
// do some thing
});
})