Selenium SendKeys добавляет только файлы для ввода [тип = несколько файлов]

#selenium #automated-tests #selenide #react-dropzone

#selenium #автоматизированные тесты #selenide #реагировать-dropzone

Вопрос:

Я не могу очистить скрытый ввод нескольких файлов с помощью selenium.

Исходный код HTML

 <input type="file" multiple style="display: none"/>
  

Selenium

 webElement.sendKeys(file1.absolutePath); // 👌🏻 file1 added
webElement.sendKeys(file2.absolutePath); // ⚠ appends file2
webElement.sendKeys(file3.absolutePath); // ⚠ appends file3
/// and so on
  

Файлы просто непрерывно добавляются во входные данные, и нет очевидного способа это очистить. Я показал элемент ввода для целей отладки, и все файлы были помещены в поле.

Файлы, добавленные только для ввода

Я пытался использовать WebElement.clear() , sendKeys(Keys.BACK_SPACE) и несколько других. Никто не работает со скрытым элементом ввода.

Комментарии:

1. вы могли бы использовать execute_script для удаления атрибута value. Или установите значение в «». Почему вы хотели очистить?

2. React-dropzone обрабатывает файл сразу после его добавления в поле. SendKeys просто добавляют новые поля в список, поэтому загружается 1-й файл, затем загружаются 1sn и 2-й, затем 1-й, 2-й и 3-й и т.д. И у меня есть список загрузок, таких как «1, 1, 2, 1, 2, 3» это не то, чего я ожидал

Ответ №1:

Просто возьмите тег и используйте driver.execute , чтобы изменить значение этого тега.

 js = "document.getElement(By.tagName("input")).value = " file2.absolutePath; 
driver.execute_script(js).