Открытие файла с помощью транспортира
Каждый пример транспортира, который я могу найти в Интернете, похоже, использует browser.get
с веб-URI.
browser.get('http://localhost:8000');
Я хотел бы использовать Selenium для простого перехода к пути file://
, чтобы мне не нужен локальный веб-сервер для выполнения тестов. Все, что мне нужно, это простая HTML-страница и некоторые ресурсы.
Это, похоже, не работает.
browser.get('file:///Users/myusername/dev/mpproject/spec/support/index.html');
Когда я вставляю этот URI в окно браузера, я получаю HTML-страницу. Когда я пытаюсь открыть его с помощью транспортира, я получаю тайм-аут.
Как я могу запускать тесты на этой странице с помощью транспортира? Идеальный ответ будет работать с относительным пути к файлу из корня myproject
.
Ответы
Ответ 1
Я отправляю решение, которое я нашел который помог мне запустить Protractor с файловым протоколом.
По умолчанию Protractor использует data:text/html,<html></html>
как resetUrl
, но location.replace
из протокола data:
в file:
недопустим (мы получим ошибку "недопустимый локальный ресурс" ), поэтому мы замените resetUrl
на один с протоколом file:
:
exports.config = {
// ...
baseUrl: 'file:///absolute/path/to/your/project/index.html',
onPrepare: function() {
// By default, Protractor use data:text/html,<html></html> as resetUrl, but
// location.replace from the data: to the file: protocol is not allowed
// (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one
// with the file: protocol (this particular one will open system root folder)
browser.resetUrl = 'file://';
}
// ...
};
Если вы хотите запустить относительный путь к папке проекта, вы можете просто использовать инструменты Node.js, потому что Protractor работает в среде Node.js. Например, __dirname
вернет абсолютный путь к каталогу, в котором сохранен конфигурационный файл Protractor. В результате используйте:
exports.config = {
// ...
baseUrl: 'file://' + __dirname + '/spec/support/index.html'
// ...
};
Кроме того, если приложение XHR запрашивает некоторые конечные точки, которые не разрешены с помощью file:
, вам может потребоваться запустить ваш тестовый браузер с пользовательскими флагами. В моем случае это был Chrome:
exports.config = {
// ...
capabilities: {
browserName: 'chrome',
chromeOptions: {
// --allow-file-access-from-files - allow XHR from file://
args: ['allow-file-access-from-files']
}
}
// ...
}
Ответ 2
У меня была такая же ошибка и исправлена исправлением Михаэля Радионова, но удаление baseUrl. Вот моя настройка:
protractor.config.js:
exports.config = {
capabilities: {
browserName: 'chrome'
},
specs: [
'*.js'
],
onPrepare: function() {
// By default, Protractor use data:text/html,<html></html> as resetUrl, but
// location.replace from the data: to the file: protocol is not allowed
// (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one
// with the file: protocol (this particular one will open system root folder)
browser.ignoreSynchronization = true;
browser.waitForAngular();
browser.sleep(500);
browser.resetUrl = 'file:///';
}
};
e2etest.js:
'use strict';
describe("Buttons' tests are started", function() {
it('Should retrieve 20 records into table', function() {
browser.get('file:///C:/Users/path_to_file/index.html');
/* Test codes here */
});
});
Ответ 3
Что такое журнал ошибок?
Это может быть связано с "Загрузка" angular. Для этого вы можете попробовать
browser.driver.ignoreSynchronization = true;
Журнал ошибок наверняка поможет в попытке понять проблему.
Ответ 4
Я думаю, что есть ошибка опечатки. В методе "get" вы должны включить URL в двойные кавычки "".
Попробуйте использовать двойные кавычки, как показано ниже:
WebDriver driver=new FirefoxDriver();
driver.get('file:///E:/Programming%20Samples/HTML%20Samples/First%20Program.html');