Ich benutze Selenium und Python, um Anfragen an eine Website zu senden. Ich mache gerade einen Datei-Upload, aber es scheint, dass es nicht so funktioniert, wie ich es erwarte. HierPython-Datei hochladen selen
ist, wie in HTML aussieht:
<div id="uploaders" class="uploaders" data-image-urls="" data-image-ids="" data-image-positions="" data-image-checksums=""><div id="uploader-container-0" class="uploader-container small empty" data-uploader-index="0" data-numbering="1" style="position: relative;">
<div id="file-picker-0" class="uploader-box small" style="position: relative; z-index: 1;">
<div class="thumb">
<div class="uploader-overlay">
<span class="photo-action edit-action">
<span class="mp-Icon-circle"><span class="mp-Icon mp-svg-edit photo-action-icon"></span></span>
</span>
<span class="remove photo-action">
<span class="mp-Icon-circle"><span class="mp-Icon mp-svg-delete photo-action-icon"></span></span>
</span>
</div>
</div>
<div class="content">
<div class="mp-svg-button-camera camera-logo centered"></div>
<div class="main-photo-subtext centered">
Hoofdfoto.
</div>
</div>
</div>
<input type="hidden" name="images.urls" value="">
<input type="hidden" name="images.ids" value="">
<input type="hidden" name="images.checksums" value="">
<div id="html5_1bdvv7bg0ptl15m6gmu1d4v16l04_container" class="moxie-shim moxie-shim-html5" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; overflow: hidden; z-index: 0;">
<input id="html5_1bdvv7bg0ptl15m6gmu1d4v16l04" type="file" style="font-size: 999px; opacity: 0; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;" multiple="" accept="image/jpeg,.jpg,.jpeg,image/bmp,.bmp,image/png,.png"></div>
Wie Sie im unteren Teil des Codes sehen kann, gibt es ein Eingabetyp Dateielement. Aber keine Form. Der Dateiupload auf der Website funktioniert folgendermaßen. Sie klicken auf ein (+) Zeichen. Dann öffne ich das Dateiauswahldialogfeld und wähle die Datei aus. Und dann kommt ein weiteres Pop-Up, das mit einem Knopf fragt, ob Sie etwas akzeptieren möchten.
Meine Frage ist, wie kann ich eine Datei hochladen. Bis jetzt habe ich es versäumt, dies zu tun.
Mein Code:
upload_photo_field_xpath = ".//*[@id='uploader-container-0']/div/input"
upload_photo_element = WebDriverWait(driver, 10).until(
lambda driver: driver.find_element_by_xpath(upload_photo_field_xpath))
image = os.path.join(os.getcwd(), 'images/' + 'img.jpg')
print(image)
upload_photo_element.send_keys(image)
upload_photo_element.submit()
Irgendwelche Gedanken darüber, wie dieses Problem zu lösen?
Danke.
Vielen Dank für Ihre Antwort @Shoaib Akhtar. Ich werde es versuchen. Eine Frage, ist diese Lösung Windows verwandt oder kann ich das auch auf Mac verwenden. – user3138008
Gehen Sie einmal durch diesen Link 1) http://stackoverflow.com/questions/9233461/pywin32-com-objects-on-mac 2) http://stackoverflow.com/questions/13852864/using-python-with- skriptfähige Anwendungen auf einem Mac –