Проблема с загрузкой файла с помощью selenium webdriver + python - PullRequest
0 голосов
/ 26 мая 2020

У меня проблема с загрузкой файлов с селеном и python. Основная проблема заключается в том, что текстовое поле, в котором выбран путь к файлу, отключено, поэтому, когда я помещаю абсолютный путь в send_keys, это ничего не делает.

Как можно обрабатывать диалоговое окно с помощью JS или другого метода ( В своей работе я не могу установить PyAutoIt или какой-либо фреймворк)

Код html следующий:

<div class="form-inline actions-toolbar">
        <input disabled="disabled" class="input-xxxlarge" id="uploadFile" style="background: rgb(255, 255, 255); margin-left: 10px;" placeholder=""> --> This is the textBox
        <div class="fileUpload btn btn-primary">
            <span>Explorar</span>
        <input name="fileUpload" tabindex="1" class="upload" id="fileUpload" onchange="showPath(this);" type="file" size="50" accept=".txt"> --> This is the button "Search"
        </div>
        <input name="batchPaymentFilePath" id="batchPaymentFilePath" type="hidden" value="">
        <button disabled="disabled" class="btn" id="uploadButton" onclick="validNavigation = true;myFunction();"><i class="icon-upload-alt"></i> &nbsp;Cargar</button> --> Button to load File

    </div>

Код python следующий:

    filePath = os.path.abspath('C:\\file\\path\\file_to_upload.txt')
driver.find_element_by_xpath('//*[@type="file"]').send_keys(filePath)

Когда я запускаю скрипт, в диалоговом окне загрузки файла отображается только рабочий стол, а не абсолютный путь к файлу.

Спасибо, ребята!

1 Ответ

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

Спасибо @ sowjanya-r-bhat, это мое обновление кода, которым вы делитесь со мной:

    driver.execute_script('document.querySelector("#uploadFile").removeAttribute("disabled");document.querySelector("#uploadFile").setAttribute("enabled", true);')
#Enable the file text box
upload = driver.find_element_by_xpath('//*[@id="uploadFile"]')
#Send the file path
upload.send_keys("C:\\file\\path\\file_to_upload.txt")
#Enable Load Button
driver.execute_script('document.querySelector("#uploadButton").removeAttribute("disabled");document.querySelector("#uploadButton").setAttribute("enabled", true);')

Мне нужно включить кнопку загрузки, потому что это зависит от файла, выбранного в файле загрузки windows.

Еще раз спасибо!

...