Ziehen Sie eine lokale Datei mit Selenium (Python) per Drag & Drop.

Einführung

Wenn Sie eine Datei mit Selenium of Python hochladen, können Sie die Datei mit "send_keys (/ path / to / file)" für das Eingabeelement mit "type =" file "" [^ selenium-send-keys] auswählen. In den meisten Fällen ist das Eingabeelement im CSS ausgeblendet, obwohl es zu fehlen scheint. In vielen Fällen kann dies durchgeführt werden (ändern Sie das CSS, damit der Web-Treiber auf das Eingabeelement zugreifen kann). Es ist notwendig.)

Einige Seiten verwenden das Eingabeelement jedoch nicht für die Dateiauswahl, und Sie müssen möglicherweise Dateien durch Ziehen und Ablegen auswählen. In einem solchen Fall ist das folgende Verfahren wirksam.

Methode

Verwenden Sie den Code in florentbr / # wd-drop-file.py --GitHub Gist.

from selenium import webdriver
from selenium.webdriver.remote.webelement import WebElement
import os.path

with open("wd-drop-file.min.js", "r") as f:
    JS_DROP_FILES = f.read()

def drop_files(element, files, offsetX=0, offsetY=0):
    driver = element.parent
    isLocal = not driver._is_remote or '127.0.0.1' in driver.command_executor._url
    paths = []
    
    # ensure files are present, and upload to the remote server if session is remote
    for file in (files if isinstance(files, list) else [files]) :
        if not os.path.isfile(file) :
            raise FileNotFoundError(file)
        paths.append(file if isLocal else element._upload(file))
    
    value = '\n'.join(paths)
    elm_input = driver.execute_script(JS_DROP_FILES, element, offsetX, offsetY)
    elm_input._execute('sendKeysToElement', {'value': [value], 'text': value})

WebElement.drop_files = drop_files

#Unten finden Sie ein Anwendungsbeispiel
driver = webdriver.Chrome()
driver.get("https://react-dropzone.js.org/")
dropzone = driver.find_element_by_css_selector("[data-preview='Basic example'] [style]")
dropzone.drop_files("C:\\temp\\image1.png ")

Wenn Sie sich Gist ansehen, können Sie alles sehen, aber der Code sieht so aus. Siehe Gist für wd-drop-file.min.js. Das Original hat direkt "JS_DROP_FILES" eingegeben, aber dieser Code liest aus einer externen Datei.

Recommended Posts

Ziehen Sie eine lokale Datei mit Selenium (Python) per Drag & Drop.
Scraping mit Python, Selen und Chromedriver
[GUI in Python] PyQt5-Drag & Drop-
Lesen und Schreiben von JSON-Dateien mit Python
Üben des Web-Scrapings mit Python und Selen
Versuchen Sie, Google Chrome mit Python und Selenium auszuführen
Screenshot mit Selen (Python Edition)
Schaben mit Selen [Python]
Lesen und Schreiben passt Dateien mit Python (Memo)
Lokaler Server mit Python
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
Automatisches Folgen auf Twitter mit Python und Selen! (RPA)
Lesen und Schreiben von Dateien mit Slackbot ~ Bot-Entwicklung mit Python ~
Automatisieren Sie Chrome mit Python und Selen auf Ihrem Chromebook
Übersetzen Sie DeepL automatisch mit Python und Selen ins Englische
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Schaben mit Selen in Python
Python und Hardware-Verwenden von RS232C mit Python-
Schaben mit Selen + Python Teil 1
Python: Arbeiten mit Firefox mit Selen
Sortieren von Bilddateien mit Python (2)
Scraping mit Selen in Python
Sortieren Sie große Dateien mit Python
Sortieren von Bilddateien mit Python (3)
Bilddateien mit Python sortieren
Integrieren Sie PDF-Dateien in Python
TXT-Dateien mit Python lesen
Schaben mit Selen + Python Teil 2
Python mit Pyenv und Venv
Fordern Sie Python3 und Selenium Webdriver heraus
Funktioniert mit Python und R.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
Extrahieren Sie Zip-Dateien rekursiv mit Python
Scraping mit Selen in Python (Basic)
Bearbeiten Sie Dateien und Ordner in Python
[Python] POST-WAV-Dateien mit Anforderungen [POST]
Lesen und verwenden Sie Python-Dateien aus Python
Mit OpenSSL mit Python 3 verschlüsselte Dateien entschlüsseln
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
Lesen und Schreiben von NetCDF mit Python
Speichern und Abrufen von Dateien mit Pepper
Behandeln Sie Excel-CSV-Dateien mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen Sie Dateien parallel zu Python
Exportieren und Ausgeben von Dateien in Python
Lesen und Schreiben von CSV mit Python
Selen und Python zum Öffnen von Google
Mehrfachintegration mit Python und Sympy
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python