Итак, я пытаюсь использовать Protractor для тестирования неуглового приложения (используя Mocha). У меня есть этот код:
var page = createAccountPage.create('/noname');
page.typeFirstNameInput('jane');
page.typeLastNameInput('doe');
page.typePasswordInput('password');
page.clickAgreedToTermsInput();
page.clickCreateAccountButton();
page.redirectToCreateProfilePage();
Обратите внимание, что все type*()
почти одинаковы:
createAccountPage.typeFirstNameInput = function(value) {
$(selector).sendKeys(value);
};
Это в основном открывает браузеры и должно заполнять формы, а затем нажимать кнопку, которая перенаправляет страницу. Проблема, с которой я сталкиваюсь, заключается в том, что она заполняет все входные данные формы, кроме имени. Если я сделаю это:
var page = createAccountPage.create('/noname');
page.typeFirstNameInput('jane');
page.typeFirstNameInput('jane');
page.typeLastNameInput('doe');
page.typePasswordInput('password');
page.clickAgreedToTermsInput();
page.clickCreateAccountButton();
page.redirectToCreateProfilePage();
Затем он заполняет имя, однако я получаю сообщение об ошибке:
StaleElementReferenceError: Element is no longer attached to the DOM
Единственная причина, по которой я вижу, что это происходит, заключается в том, что форма теперь заполнена правильно, и нажатие кнопки перенаправляет страницы, и по какой-то причине первый page.typeFirstNameInput('jane');
выполняется последним (что также объясняет, когда, когда он у меня есть один раз, имя заполняется).
Есть ли причина, по которой первое действие page.typeFirstNameInput('jane');
будет выполняться последним?
typeFirstNameInput
выше? Это может быть полезно stackoverflow.com/questions/17174515/ - person codef0rmer   schedule 26.04.2015