сделать элемент видимым для загрузки файла с использованием селена и python - PullRequest
0 голосов
/ 29 мая 2020

вот фрагмент Html:

 <div class="ia-ControlledFilePicker"><input class="ia-ControlledFilePicker-control icl-u-visuallyHidden" type="file" id="ia-FilePicker"><label class="ia-ControlledFilePicker-fakeControl" for="ia-FilePicker">Choose file</label><span class="ia-ControlledFilePicker-info">No file chosen</span></div>
    <input class="ia-ControlledFilePicker-control icl-u-visuallyHidden" type="file" id="ia-FilePicker-resume">

Вот CSS бит:

.icl-u-visuallyHidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }

Цель: загрузить файл на страницу, используя селен python. Я тоже не могу нажать кнопку «выбрать файл» из селена, потому что она скрыта.

То, что я пытался сделать видимым элемент, но не работает:

    # change_visibility = "document.setElementById('ia-FilePicker').style.visibility='visible';"
    # changWebElemente_display = "document.setElementById('ia-FilePicker').style.display='block';"
    # self.driver.execute_script(change_visibility)
    # self.WebElement.execute_script(change_display)

#

    # change_height = "document.getElementsByClassName('ia-FilePicker.ia-ControlledFilePicker-control.icl-u-visuallyHidden').style.height='100px';"
    # change_width = "document.getElementsByClassName('ia-FilePicker.ia-ControlledFilePicker-control.icl-u-visuallyHidden').style.width='100px';"
    # self.driver.execute_script(change_height)
    # self.driver.execute_script(change_width)

#

WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.ia-FilePicker.ia-ControlledFilePicker-control.icl-u-visuallyHidden#ia-FilePicker-resume"))).style.display = "block" ) 

И многое другое. Я работал над этим несколько дней.

Ошибка: Сообщение: javascript ошибка: Не удается прочитать свойство 'style', равное null.

Я тоже знаю об AutoIT, но пока хочу придерживаться Selenium на Chrome и Python. Что я могу сделать? Спасибо за помощь.

1 Ответ

0 голосов
/ 29 мая 2020

Сделайте поле видимым с настройкой непрозрачности

self.driver.execute_script("document.querySelector(\"input[id*='ia-FilePicker-resume']\").style.opacity='1'");

, а затем попробуйте загрузить файл

...