Чтобы изменить URL-адрес после сообщения формы, вы должны использовать res.redirect()
для перенаправления браузера на новый URL-адрес. Затем браузер запросит новый URL-адрес, и вам понадобится маршрут для этого нового URL-адреса, чтобы вернуть желаемое содержимое страницы.
router.post('/', (req, res) => {
// other code here to process form data
newUser.save(..., function(err) {
if (err) {
console.log(err);
res.sendStatus(500);
} else {
// build new URL here
res.redirect(newURL);
}
});
}
Если вы хотите отобразить имя пользователя на странице к которому вы перенаправляетесь, вы должны использовать шаблон EJS, в котором есть место в нем для имени пользователя, и вы получите имя пользователя из любого места, куда вы поместите его в URL-адрес, и отправьте его в res.render()
для шаблона, чтобы EJS вставьте имя пользователя в нужное место.
Если вы делаете какой-то логин, вы можете захотеть сделать весь процесс по-разному. Возможно, вам захочется создать объект сеанса пользователя (возможно, с express-session
) на сервере и сохранить имя пользователя там, чтобы в любое время вы хотите отобразить страницу, имя пользователя можно извлечь из объекта сеанса на стороне сервера, а не помещать это в URL. Это, вероятно, немного более надежным.
У меня есть пара комментариев по этому поводу.
Во-первых, ваша угловая ошибка в том, что объявленная вами функция 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
});
})