Некоторые из вас могут знать, что можно попросить пользователя выбрать файл (ы), даже не помещая <input type=file">
внутри DOM , Кажется, что это нормально для большинства браузеров, если этот код вызывается изнутри обработчика события клика, инициированного пользователем.
Итак, в основном я использую эту функцию, чтобы получить обещание ES6 файла.
function askForFile() {
var $input = $("<input type='file'/>");
var promise = new Promise(function(resolve, reject) {
$input.change(e => {
resolve(e.target.files[0]);
});
});
$input.click();
return promise;
};
Это прекрасно работает, но может ли кто-нибудь сказать мне, как его можно протестировать с помощью Selenium?
Я видел некоторые Селен snippets, что разрешение на ввод заполнить DOM с некоторым файлом:
// find the input element
WebElement elem = driver.findElement(By.xpath("//input[@type='file']"));
// 'type' the file location to it as it were a usual <input type='text' /> element
elem.sendKeys("C://path/To/File.jpg");
Но мой вклад не в DOM, так что кажется, что я не могу использовать этот трюк. Есть ли способ проверить мой код с Selenium?
Может ли кто-нибудь сказать мне, есть ли другой способ тестирования, чтобы задать пользователю файл (ы) без ввода бесполезного ввода в DOM?
Затем вы создаете вход с селеном, но как мое приложение получить код расслоение плотной этот файл, то ? Не уверен, что мы можем установить значение val, как нет? –
Нет, вход создается вашим приложением при вызове 'askForFile'. Selenium просто добавляет слушателя к событию 'onclick'. В самом деле, я не уверен, что вы можете указать путь к файлу, как этот, но у вас уже есть код, который легко тестировать :) –
, но как '$ (" input [type = file] ")' вернет что-либо, если нет ввода добавлен в DOM? –