Я следовал предложениям в этой теме: Тестовый пример Protractor e2e для загрузки файла PDF и файл загружается правильно, но время теста истекает до достижения сравнения/ожидания.
var filename = 'somefilename';
var content = 'some content\r\nsome more content';
download.click();
browser.driver.wait(function() {
return fs.existsSync(filename);
}, 5000).then(function() {
expect(fs.readFileSync(filename, {encoding: 'utf8'})).toEqual(content);
});
Он создает и загружает файл, а затем сидит там в течение 5 секунд, прежде чем продолжить. Сообщение, которое я получаю:
Message:
Error: Wait timed out after 5000ms
Stacktrace:
Error: Wait timed out after 5000ms
at Array.forEach (native)
From: Task: <anonymous wait>
at /path/to/test/e2e/scenarios.js:337:28
at Array.forEach (native)
Где строка 337 — это строка browser.driver.wait.
Я попытался сделать это без browser.driver.wait, поскольку загрузка на самом деле очень быстрая, поскольку файл состоит всего из двух коротких строк, выполнив следующие действия:
expect(fs.existsSync(filename));
browser.sleep(5000);
expect(fs.readFileSync(filename, {encoding: 'utf8'})).toEqual(content);
но он говорит, что имя файла не существует для readFileSync, и я предполагаю, что это связано с тем, что файл еще не загружен, а browser.sleep(5000) ничего не делает.
Есть ли другой способ сделать обещания в транспортире? Или может кто-нибудь подсказать мне, почему это может не работать? Я использую Protractor 2.1.0. Я запускал 1.0.0 и обновил все, прежде чем пытаться снова, но, увы, он все еще не работает.
С уважением, Джули