Kann die einer Website generiert werden HTML mit Canopy gespeichert werden? Betrachtet man die Dokumentation unter 'Getting Started', konnte ich nichts Ähnliches finden.Generierten HTML-Code mit Canopy speichern
Antwort
Sie beliebige JavaScript ausführen können mit js
, document.documentElement.outerHTML
den aktuellen DOM zurückkehren, so
let html = js "return document.documentElement.outerHTML" |> string
funktioniert der Trick.
Canopy ist ein Wrapper um Selen, der einige nützliche Hilfsfunktionen bietet. Aber es bietet auch Zugriff auf die Selenium IWebElement
Instanzen für den Fall, dass Sie sie brauchen, über die element
function (auf halbem Weg auf der Seite; es scheint nicht interne Anker auf dieser Seite, so konnte ich nicht direkt mit der Funktion verknüpfen). Dann, sobald Sie das IWebElement
Objekt haben, wird Ihr Problem ähnlich wie this one, wo die Antwort scheint elem.getAttribute("innerHtml")
wo elem
ist das Elemem, dessen Inhalt Sie wollen (das könnte sogar die html
Element sein). Beachten Sie, dass das innerHtml
-Attribut nicht ein Standard-DOM-Attribut ist, so dass dies nicht mit allen Selenium-Treibern funktioniert; Es hängt davon ab, in welchem Browser Sie laufen. Aber es funktioniert anscheinend in allen gängigen Webbrowsern.
Siehe Get HTML Source of WebElement in Selenium WebDriver using Python für eine verwandte Frage mit Python, die mehr Diskussion darüber hat, ob das innetHtml
Attribut in allen Browsern funktioniert. Wenn nicht, Canopy auch hat die js
Funktion, die Sie nutzen könnten, um einige Javascript zu starten, um die HTML, die Sie suchen - aber wenn Sie Probleme damit haben, müssen Sie wahrscheinlich eine fragen Javascript-Frage eher als eine F # -Frage.
Wenn ich versuche, 'let html = element" html "|> string' hinzuzufügen, wird' NoSuchWindowException' ausgelöst, was merkwürdig ist, da auf der generierten HTML-Seite ein html-Element sein sollte. – bugfoot
Was passiert, wenn Sie diese Seite in einem Browser laden und dann die Developer Tools öffnen, um sich deren Inhalt anzusehen? Hat es ein "html" -Element? – rmunn
Warum machst du da auch '|> String? Die Idee ist, das 'IWebElement'-Objekt ** zu erhalten und seine Eigenschaften zu verwenden; es in eine Zeichenfolge umzuwandeln scheint kontraproduktiv. – rmunn
- 1. Canopy mit mysql verbinden
- 2. Canopy Paketmanager Installationstaste fehlt
- 3. Canopy führt keinen Code
- 4. Speichern eines generierten Bildes auf Matlab Gui
- 5. Django speichern automatisch generierten Formular aus DB
- 6. Enthought Canopy startet nach dem Upgrade nicht
- 7. Enthought Canopy Pandas, die nicht installieren
- 8. Versuchen, eine Klasse in einer Klasse mit Canopy und F #
- 9. Wie bekomme ich Python 3 mit Enthought Canopy installiert?
- 10. HTML nicht korrekt mit Canopy 1.7.1.3323/IPython 4.1.2
- 11. Dynamisch generierten Code als String oder als Code-Objekt speichern?
- 12. Dynamisch generierten Checkbox-Status in einem ListView speichern
- 13. Makefile mit bedingt generierten Datei
- 14. Arbeiten mit dynamisch generierten Kinder
- 15. Vergleichen generierten Brief mit Benutzereingabe
- 16. Entfernen dynamisch generierten Tabellenzeilen
- 17. Tensorflow speichern und laden
- 18. Installieren einer anderen Python-Version neben Enthought Canopy
- 19. Upgrade-Version von scikit-learn in Enthought Canopy Verteilung enthalten
- 20. installieren R-Kernel in Jupyter von Canopy Python 2.7
- 21. Wie kann ich den Inhalt einer mit PHP generierten HTML-Seite herunterladen/speichern?
- 22. So erhalten Sie die Option "Speichern unter" in einer neu generierten Datei mit Macro.
- 23. Holen und speichern Sie den von PHP generierten Inhalt mit FPDF
- 24. Gruppierung von generierten divs zu anderen generierten divs
- 25. DI mit automatisch generierten Web-Service-Clients
- 26. Cordova android - Wie benutzerdefinierte build.gradle mit generierten
- 27. Datei mit generierten Namen Aufruf revving
- 28. Wie mit den oft generierten Nachrichten umgehen?
- 29. Öffnen Sie Modalbox mit generierten Schaltflächen
- 30. Vorteile/Nachteile der mit Javascript generierten Websites
Während Ihre Antwort aussieht und verhält sich viel versprechend, das Problem ist, dass es den erzeugten HTML-Code der Standard WebDriver Seite, das heißt „
Leider gibt es keine (einzige) Lösung für dieses Problem. Im Allgemeinen können Sie nicht feststellen, ob eine Seite (einschließlich JavaScript) geladen/ausgeführt wurde oder ob einige Aktionen (z. B. über 'setTimeout') oder sogar nur unendliche Animationen warten. Wenn Sie die Seite kennen, können Sie auf einige Indikatoren warten: siehe 'waitFor',' waitForElement', z. 'waitFor (fun() -> js" zurück document.readyState "|> string =" complete ")' Wie auch immer, dies sollte eine separate Frage sein (die wahrscheinlich als Duplikat geschlossen wird). – CaringDev
Tatsächlich habe ich die [erforderliche Konfiguration für IE] übersehen (https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration). Mit allem, was gesetzt ist, und Ihrem 'waitFor'-Code, kann es in der Tat den _generated_ HTML speichern. Vielen Dank :-) – bugfoot