Die Interaktion mit pop-up-Boxen, die mit Selen in python
Ich versuche, die Selen-Modul in python zu generieren, die eine text-Liste von einer website, speichern Sie es in einem Verzeichnis, und Blättern Sie zu, dass text-Liste auf einer anderen Website zu übermitteln.
Arbeite ich auf das Skript in zwei Teile - 1. Holen Sie sich die Metadaten und 2. Die Daten der Bestellung. Ich habe erfolgreich abgeschlossen, das Skript in Teil 1, nur für die Letzte Sache: die Wahl zum speichern der Metadaten-Datei, die gerade erzeugt. Ich ließ Sie allein, um die Arbeit an Teil 2, in der Hoffnung ich würde stolpern die Antwort, aber ich bin einfach zu erreichen, um gleiche problem, wenn der pop-up-Fenster wählen Sie "Datei" kommt.
In der Dokumentation, ich sagte, dass Selenium WebDriver hat eine eingebaute Unterstützung für den Umgang mit popup-Dialogfelder, und dass nach dem Start ein Dialogfeld an, wenn ich den Anruf alert = driver.switch_to_alert()
dann kann ich "akzeptieren, zu entlassen, zu Lesen, seinen Inhalt, oder sogar geben Sie in eine Eingabeaufforderung eingeben."
Aber es funktioniert nicht. Wenn ich versuche alert.text('some text')
oder alert.send_keys(Keys.TAB)
, ich erhalte die Fehlermeldung NoAlertPresentException: Message: No alert is present
und nach hinzufügen, den Befehl zu warten, bekomme ich die Fehlermeldung TimeoutException: Message:
Sind die popups, ich bin immer (screenshots angehängt) nicht erkannt durch Selen? Wenn ja, wie kann ich mit Ihnen interagieren? Wie es scheint, mit dieser zu speichern und/oder hochladen von Dateien ist etwas, das viele Menschen zu tun haben, aber ich kann nichts finden auf Google. Speziell möchte ich wählen Sie 'Datei Speichern' und dann 'OK' zum ersten Bild und zum zweiten möchte ich auf durchsuchen, um die Datei (d.h. geben Sie den Pfad in das Feld Dateiname) und klicken Sie auf 'Öffnen.' Ich möchte nicht nur meine Firefox-Einstellungen automatisch zu speichern, da diese schließlich ausgeführt werden, in einer anderen Umgebung, und das wird nicht helfen, mein zweites problem.
Dank!
BEARBEITEN:
Ich Teste mein Skript auf windows, aber es wird irgendwann implementiert werden, auf einem linux-cloud-server. Ich dachte, ich würde zu haben, um wechseln zu PhantomJS webdriver (das war wahrscheinlich zu meinem problem noch schlimmer) zu tun headless browsing, aber ich fand einen Weg, um firefox. Ich denke, all dies bedeutet, ist, dass ich kann nicht mit AutoIT zu lösen mein problem.
- - Treiber.switchto.alert(in Java) verwenden wir für die JavaScript-Dialoge. Sie sind alertbox, conformationbox und Popupbox. Aber das Dialogfeld, das Sie sehen, nicht gehört zu einer der oben genannten, so dass Sie nicht in den Griff mit Alarm. Für eine detaillierte Erklärung der Warnmeldungen Sie können beobachten video youtube.com/watch?v=3T0YaroB2fk. Möglicherweise müssen Sie versuchen, AutoIT etc.. für ur-problem.
- Sie können versuchen, etwas, das äquivalent der Roboter-Klasse in java.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Popups, die Sie sehen, sind keine regulären popups, die mit interagiert werden kann mit
switch_to
. Diese popups sind system Dialoge und kann nicht automatisiert werden mitselenium
.In der Regel Menschen, die vermeiden, dass diese Dialoge gezeigt, die in Erster Linie durch änderungen browser-Einstellungen, z.B.:
Hochladen, in der Regel finden Sie die entsprechende input-element und senden-Tasten, um es mit einem Pfad zu der Datei:
Lassen Sie mich wissen, wenn Ihr Fall nicht gelöst werden können, indem die Antworten in den links, die ich angehängt habe.
Als für Ihr erstes, "download-Datei automatisch" - problem, die Sie gerade brauchen, um einen korrekten content-type:
Zweite problem beheben (upload Teil):
metadata.xml
Datei Schaltfläche -, so dass ich es testen kann? Danke.WebdriverWait
, versuchen Sie dies:wait.until(lambda: not os.path.isfile(os.path.join(path, 'metadata.xml.part')))
.Extrem einfache Implementierung mit Hilfe von AutoIT.
Unten scripts und Schritte können hely, klicken Sie auf "Speichern>OK" in diesem Fenster pop-UP
Schritt 1: Download AutoIT-Paket/tool hier AutoIt können Sie wählen Sie ZIP-format (extrahieren)
Schritt 2: Öffnen Sie einen Texteditor (z.B. notepad) und kopieren Sie folgenden code und speichern Sie mit der Erweiterung .au3
(e.g-Datei.au3)
Schritt 3: Aus der extrahierten zip - (Schritt 1) look für Ordner mit dem Namen: Aut2Exe und öffnen Sie es
Schritt 4: Klicken Sie auf Aut2exe_x64.exe wenn dein OS 64 bit, ansonsten klicken Sie auf Aut2exe.exe
Schritt 5: Navigieren/Suchen Sie die Datei erstellt in Schritt 2. (Datei-speichern als Erweiterung .a3)
UND Wählen Sie Ziel - (.exe/.a3x) und wählen Sie .exe option (sagen file.exe)
UND dann Klicken Sie auf konvertieren
Schritt 6: schließen Sie das file.exe in Ihrem Projekt Ordner und verwenden Sie es wie pro Ihre Anforderung mit folgenden code (wie in Eclipse):