Telerik Open File Dialog не нажимается с помощью функции щелчка Selenium Web Driver
HTML & CSS код выше показанного интерфейса:
<span class="ruFileWrap ruStyled">
<input type="text" class="ruFakeInput radPreventDecorate" id="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfakeInput0" size="22">
<label for="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfakeInput0" style="display:none">label</label>
<input type="button" tabindex="-1" value="Select" class="ruButton ruBrowse">
<input type="file" tabindex="0" class="ruFileInput" multiple="multiple"
name="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" id="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" size="23">
<label for="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" style="display:none">label</label>
</span>
Наблюдение:
Функция загрузки файлов достигается с помощью Telerik Control
Проблема:
Необходимо загрузить файл, но всякий раз, когда щелчок Selenium WebDriver выполняется по кнопке "Выбрать", появляется следующая ошибка
OpenQA.Selenium.NoSuchElementException: 'нет такого элемента: невозможно найти элемент.
Были разные ошибки для разных элементов, которые были нажаты. Одним из них было "Элемент не кликабелен"
Неудачные попытки, которые пытались открыть File Dialogue:
Нажал на кнопку выбора ()
Нажмите на TextBox ()
Нажал на Span ()
Выполненный JavaScript-клик для всех вышеперечисленных элементов
Пробовал driver.FindElement(By.Xpath("Xpath диалогового окна" Открыть файл "").SendKeys("FilePath");
1 ответ
Я следовал ниже шагов, чтобы решить:
- Обнаружил, что открытый диалог File был скрыт (из-за класса ruFileInput)
<input type="file" tabindex="0" class="ruFileInput" multiple="multiple" name="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" id="ctl00_ContentPlaceHolder1_fileMgr_RadAsyncMultiUploadfile0" size="23">
- Чтобы показать его, я удалил класс ruFileInput с помощью JavaScript
document.querySelectorAll('input[type = file]')[0];
element.className = ' ';
- Затем выполнил обычный селеновый веб-драйвер, кликнув по нему.