Я пытаюсь извлечь URL из регистрационного электронного письма в моем сквозном тесте для Protractor, но я получаю ошибки, пытаясь проанализировать большую строку.
Я получаю следующую ошибку:
*
Сбои: 1) MockMock Получить ссылку для проверки Сообщение: Ошибка: regText.indexOf не является функцией Stack: TypeError: regText.indexOf не является функцией в getRegLink (D: \ QA \ Scripting \ ProtractorHelloWorld \ CCspecMockMock.js: 19: 27) в UserContext.(D: \ QA \ Scripting \ ProtractorHelloWorld \ CCspecMockMock.js: 37: 14) в C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ jasminewd2 \ index.js: 112: 25 в новой версии ManagedPromise(C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ prom.js: 1077: 7) в ControlFlow.promise (C: \ Users \ dcoughler \ AppData \ Roaming \npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ обещание: js: 2505: 12) в schedulerExecute (C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ jasminewd2 \ index.js:95:18) в TaskQueue.execute_ (C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ prom.js: 3084: 14) в TaskQueue.executeNext_ (C: \Пользователи \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ обещание: js: 3067: 27) в asyncRun (C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \node_modules \ selenium-webdriver \ lib \ обещание: js: 2974: 25) вC: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ advance.js: 668: 7 От: Задача: Запустить его («Получить ссылку для проверки») в потоке управления в UserContext,(C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ jasminewd2 \ index.js: 94: 19) в C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \jasminewd2 \ index.js: 64: 48 в ControlFlow.emit (C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ events.js: 62: 21) в ControlFlow.shutdown_ (C: \ Users \ dcoughler \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ обещание.js: 2674: 10) в shutdownTask_.MicroTask (C: \ Users \ dcoughler \ AppData \ Roaming\ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ обещание: js: 2599: 53) Из асинхронного теста: ошибка в Suite.(D: \ QA \ Scripting \ ProtractorHelloWorld \ CCspecMockMock.js: 35: 1) в объекте.(D: \ QA \ Scripting \ ProtractorHelloWorld \ CCspecMockMock.js: 2: 1) в модуле Module._compile (внутренний / modules / cjs / loader.js: 688: 30) в Object.Module._extensions..js (внутренний / modules/cjs/loader.js:699:10) в Module.load (внутренний / modules / cjs / loader.js: 598: 32) в tryModuleLoad (внутренний / modules / cjs / loader.js: 537: 12) 1 спецификация,1 сбой Закончено за 0,622 секунды
*
Вот код:
// spec.js
describe('MockMock', function() {
var tRegMessage = element(by.className('well'));
var tabledata = $$('./table');
// get rows
var rows = tabledata.all(by.tagName("tr"));
// get cell values
var cells = rows.all(by.tagName("td"));
var commonfunctions = require('./CCCommonFunctions.js');
function clickRegistration(email) {
element(by.xpath("//td[. = '" + email + "']/following-sibling::td/a")).click();
}
function getRegLink(regText) {
var startUrl = regText.indexOf("http://");
var endUrl = regText.indexOf("Thank you",startUrl);
getRegLink = regText.substring(startUrl,endUrl);
}
function Login(username, password) {
fUserName.sendKeys(username);
fPassword.sendKeys(password);
commonfunctions.ccClick(bLoginButton);
}
beforeEach(function() {
browser.waitForAngularEnabled(false);
browser.get('http://ns-rd-app-wi:2525/');
});
it('Get verification link', function() {
clickRegistration('PhillipPies@mock.com');
browser.get(getRegLink(tRegMessage));
browser.pause();
});
});
Как мне разбирать строки в транспортире?Кажется, я слишком привык к VBScript.
=================================================================
Я внес изменения на основе комментариев ниже,но я все еще застрял:
describe('MockMock', function() {
var tRegMessage = element(by.className('well'));
var tabledata = $$('./table');
// get rows
var rows = tabledata.all(by.tagName("tr"));
// get cell values
var cells = rows.all(by.tagName("td"));
var commonfunctions = require('./CCCommonFunctions.js');
function clickRegistration(email) {
element(by.xpath("//td[. = '" + email + "']/following-sibling::td/a")).click();
}
function getRegLink(regMessage) {
return new Promise(resolve => {
regMessage.getText().then(text => {
var startUrl = text.indexOf("http://");
var endUrl = text.indexOf("Thank you",startUrl);
resolve(text.substring(startUrl,endUrl-2))
} )
})
}
beforeEach(function() {
browser.waitForAngularEnabled(false);
browser.get('http://ns-rd-app-wi:2525/');
});
it('Get verification link', function() {
clickRegistration('PhillipPies@mock.com');
var regURL=getRegLink(tRegMessage.getText());
browser.get(regURL.toString());
browser.pause();
});
});
Теперь выдается новая ошибка: Сбой: неизвестная ошибка: необработанная ошибка инспектора: {"code": - 32000, "message": "Невозможно перейти к неверному URL"} (Информация о сеансе: chrome = 71.0.3578.98) (Информация о драйвере: chromedriver = 2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1), платформа = Windows NT 10.0.16299 x86_64)