Kernpunkte
- Phantomjs, ein webkit-basierter Kopflosenbrowser, der eine schnellere programmatische Automatisierung und das Testen von Webseiten erm?glicht, ohne dass eine grafische Benutzeroberfl?che erforderlich ist.
- Phantomjs bietet leistungsstarke Funktionen wie die M?glichkeit, über JavaScript mit Seiten zu interagieren, um eine einfache Automatisierung von Aufgaben wie Klicken auf Schaltfl?chen, Senden von Formularen und sogar das Laden und Manipulieren von Webseiten mit Bibliotheken wie Standard -DOM -API oder JQuery zu erm?glichen.
- Phantomjs bietet eine umfangreiche Dateisystem -API, mit der Anwendungen Quellcode für das Dateisystem speichern, Screenshots von Webseiten aufnehmen und sogar externe Skriptdateien in Seiten einbeziehen k?nnen.
- Obwohl Phantomjs leistungsstark ist, ist es nicht sehr integriert in Node.js.
Wenn Sie diesen Artikel lesen, werden Sie h?chstwahrscheinlich wissen, was ein Browser ist. Entfernen Sie nun die GUI und Sie erhalten den sogenannten kopflosen Browser . Ein kopfloser Browser kann dieselben Dinge wie ein normaler Browser tun, aber er ist schneller. Sie eignen sich perfekt für die programmgestützte Automatisierung und Testen von Webseiten. Derzeit gibt es viele kopflose Browser, und Phantomjs ist die beste unter ihnen. Phantomjs basiert auf Webkit, dem Motor hinter Chrome und Safari und bietet Ihnen leistungsstarke Browserfunktionen, ohne dass eine sperrige GUI erforderlich ist. Der Einstieg mit Phantomjs ist einfach - laden Sie einfach die ausführbare Datei herunter. Erstellen Sie als N?chstes eine Datei mit dem Namen hello.js und fügen Sie die folgenden Codezeilen hinzu:
console.log("Hello World!"); phantom.exit();
Um das Skript auszuführen, führen Sie den folgenden Befehl aus. Beachten Sie, dass die ausführbaren Phantomjs im aktuellen Verzeichnis oder irgendwo im Weg der Umgebung liegen müssen. Wenn alles korrekt konfiguriert ist, druckt Phantomjs "Hello World!" Zur Konsole und endet, wenn Phantom.exit () aufgerufen wird.
phantomjs hello.js
Verwenden Sie die Webseite
Nachdem Phantomjs ausgeführt wurde, k?nnen Sie das Web automatisieren. Das folgende Beispiel l?dt die Google -Startseite und speichert den Screenshot in einer Datei. Zeile 1 erstellt eine neue Instanz der Webseite. Zeile 4 l?dt Google.com. Nachdem die Seite geladen wurde, wird die Rückruffunktion für Onloadfineished () ausgeführt. Die Rückruffunktion empf?ngt einen einzelnen Parameterstatus, der angibt, ob die Seite erfolgreich geladen wird. Die URL zum Laden der Seite ist auf Seite.url verfügbar. Diese Eigenschaft ist besonders nützlich, wenn die Seite Weiterleitungen enth?lt, und Sie m?chten genau wissen, wo Sie sich befinden. Zeile 8 verwendet die Render () -Methode der Seite, um einen Screenshot zu machen. Render () kann PNG-, GIF-, JPEG- und PDF -Dateien erstellen.
console.log("Hello World!"); phantom.exit();
Seiteneinstellungen
Viele Einstellungen von Seitenobjekten k?nnen gem?? den Anforderungen der Anwendung angepasst werden. Wenn Sie beispielsweise nur daran interessiert sind, Quellcode herunterzuladen, k?nnen Sie Ihre Anwendung beschleunigen, indem Sie die Bilddatei ignorieren und JavaScript schlie?en. Das folgende Umschreiben -Beispiel spiegelt diese ?nderungen wider. Die ge?nderten Einstellungen werden in den Zeilen 3 und 4 angezeigt. Beachten Sie, dass alle Einstellungs?nderungen vor dem Aufrufen von Open () vorgenommen werden müssen. Wenn Sie sich den Screenshot dieses Beispiels ansehen, werden Sie feststellen, dass das Google -Logo -Bild fehlt, der Rest der Seite bleibt jedoch gleich.
phantomjs hello.js
Zugriff auf das Dateisystem
Bisher hat unser Beispiel die Seite geladen und den Screenshot als Bilddatei gespeichert. W?hrend dies zweifellos cool ist, bevorzugen viele Anwendungen, Quellcode in ein Dateisystem zu speichern. Phantomjs macht dies durch eine breite Palette von Dateisystem -APIs. Das folgende Beispiel verwendet das Dateisystemmodul, um Google.com -Quellcode in eine Datei zu schreiben. Importieren Sie zun?chst das Dateisystemmodul in Zeile 2. ?ffnen Sie in Zeile 6 die Ausgabedatei zum Schreiben. Verwenden Sie in Zeile 7 die Methode write (), um die Daten in die Datei zu schreiben. Der tats?chliche Quellcode kann über die Inhaltseigenschaft der Seite erhalten werden. Schlie?lich schlie?en Sie die Datei und beenden Sie Phantomjs.
var page = require("webpage").create(); var homePage = "http://www.google.com/"; page.open(homePage); page.onLoadFinished = function(status) { var url = page.url; console.log("Status: " + status); console.log("Loaded: " + url); page.render("google.png"); phantom.exit(); };
Führen Sie JavaScript
ausEines der leistungsst?rksten Merkmale von Phantomjs ist die F?higkeit, über JavaScript mit Seiten zu interagieren. Dies erleichtert es extrem einfach, Aufgaben wie Klicken auf Schaltfl?chen und das Senden von Formularen zu automatisieren. Unser n?chstes Beispiel führt eine Websuche durch, indem die Google -Homepage geladen, eine Abfrage eingegeben und ein Suchformular gesendet wird. Der Beginn des Beispiels sollte bekannt aussehen. Der neue Inhalt beginnt in Zeile 8 und wir bestimmen, welche Seite geladen wurde. Wenn dies die Startseite ist, wird die Methode Evaluate () der Seite aufgerufen. Evaluate () führt den Code aus, den Sie im Kontext der Seite bereitstellen. Dies gibt Ihnen tats?chlich die gleichen Berechtigungen wie der ursprüngliche Entwickler der Seite. Wie cool ist das?
var page = require("webpage").create(); var homePage = "http://www.google.com/"; page.settings.javascriptEnabled = false; page.settings.loadImages = false; page.open(homePage); page.onLoadFinished = function(status) { var url = page.url; console.log("Status: " + status); console.log("Loaded: " + url); page.render("google.png"); phantom.exit(); };
Inside Evaluation () finden wir das Suchfeld und das Formular. Wir setzen den Wert des Suchfelds auf "JSPRO" und reichen das Formular ein. Dies führt dazu, dass die Onloadfineed () -Methode der Seite erneut abgefeuert wird. Diesmal werden jedoch Screenshots der Suchergebnisse genommen, und Phantomjs beenden. PhantomJs bietet auch zwei Methoden, einschlie?lich Js () und InjectJS (), mit denen Sie einer Seite externe Skriptdateien hinzufügen k?nnen. Includejs () wird verwendet, um jede Skriptdatei aufzunehmen, auf die von der Seite zugegriffen werden kann. Sie k?nnen beispielsweise den folgenden Code verwenden, um JQuery in das vorherige Beispiel einzubeziehen. Beachten Sie, dass der Anruf in Zeile 9 und die JQuery -Syntax in Evaluate () einbezogen wird.
var page = require("webpage").create(); var fs = require("fs"); var homePage = "http://www.google.com/"; page.open(homePage); page.onLoadFinished = function(status) { var file = fs.open("output.htm", "w"); file.write(page.content); file.close(); phantom.exit(); };Die Methode
injectjs () ?hnelt includejs (). Der Unterschied besteht darin, dass auf die injizierte Skriptdatei nicht über das Seitenobjekt zugegriffen werden muss. Auf diese Weise k?nnen Sie beispielsweise Skripte aus Ihrem lokalen Dateisystem injizieren.
phantomjs und node.js
Leider wurde Phantomjs nicht in node.js. Einige Projekte wurden erstellt, um zu versuchen, Phantomjs von Node.js zu kontrollieren, aber sie sind alle etwas ungeschickt. Bestehende Projekte verwenden untergeordnete Prozessmodule, um Phantomjs -Instanzen zu generieren. Als n?chstes l?dt Phantomjs eine spezielle Webseite, die mit node.js mithilfe von Websockets kommuniziert. Es mag nicht ideal sein, aber es funktioniert. Zwei weitere beliebte Phantomjs-Knotenmodule sind Knotenphantom und Phantomjs-Node. Ich habe kürzlich angefangen, mein eigenes Phantomjs -Knotenmodul namens Ghostbuster zu entwickeln. Ghostbuster ?hnelt dem Knotenphantom, versucht jedoch, die Rückrufverschachtel durch leistungsf?higere Befehle zu verringern. Je weniger Anrufe bei Phantomjs, desto weniger Zeit verschwenden Sie Kommunikation auf Websockets. Eine weitere Option ist Zombie.js, ein leichter, kopfloser Browser, der auf JSDOM gebaut wurde. Zombie ist nicht so m?chtig wie Phantomjs, aber es ist ein echtes Node.js -Modul.
Schlussfolgerung
Nach dem Lesen dieses Artikels sollten Sie ein grundlegendes Verst?ndnis von Phantomjs haben. Eine der besten Merkmale von Phantomjs ist die Benutzerfreundlichkeit. Wenn Sie mit JavaScript bereits vertraut sind, ist die Lernkurve klein. Phantomjs unterstützt auch verschiedene andere Funktionen, die in diesem Artikel nicht behandelt werden. Wie immer ermutige ich Sie, die Dokumentation anzusehen. Es gibt auch einige Beispiele, die die volle Funktionalit?t von Phantomjs zeigen!
FAQs über Kopflosen Webkit und Phantomjs
Was ist der Hauptunterschied zwischen kopflosen Webkit und Phantomjs?
Headless Webkit und PhantomJs sind beide Tools zur Automatisierung von Webbrowsern. Der Hauptunterschied ist jedoch ihre Funktion. Headless Webkit ist ein Browser ohne grafische Benutzeroberfl?che, die es programmgesteuert für die Automatisierung, das Testen und die serverseitige Renderung steuern kann. Phantomjs hingegen ist ein kriptierbarer kopfloser Browser zur Automatisierung von Web -Interaktionen und bietet JavaScript -APIs, die automatisierte Navigation, Screenshots, Benutzerverhalten und Behauptungen unterstützen.
Ist Phantomjs noch aufrechterhalten?
Ab M?rz 2018 wurde Phantomjs nicht mehr aktiv aufrechterhalten. Der Hauptgrund ist die Entstehung moderner, kopfloser Browser wie Chrome Headless Browsers und Firefox Headless Browsers, die mehr Funktionen und bessere Unterstützung bieten.
Was sind einige Alternativen zu Phantomjs?
Da Phantomjs nicht mehr aufrechterhalten wird, treten einige Alternativen auf. Dazu geh?ren Puppeteer, eine Knotenbibliothek, die eine API auf hoher Ebene zur Steuerung von Chrom oder Chrom über das Devtools-Protokoll und Selenium WebDriver bietet, eine Open-Source-Sammlung von APIs für automatisierte Testen von Webanwendungen.
Wie funktioniert Phantomjs?
Phantomjs arbeitet durch Bereitstellung einer JavaScript -API, die automatisierte Navigation, Screenshots, Benutzerverhalten und Behauptungen unterstützt. Es handelt sich um ein skriptierbares, kopfloser Webkit, das die JavaScript -API verwendet. Es bietet eine schnelle und native Unterstützung für eine Vielzahl von Webstandards: DOM -Verarbeitung, CSS -Selektor, JSON, Canvas und SVG.
Kann ich Phantomjs für das Webkriechen verwenden?
Ja, Phantomjs k?nnen zum Webkriechen verwendet werden. Sie k?nnen Webseiten mit gemeinsamen Bibliotheken wie Standard -DOM -API oder JQuery laden und manipulieren.
Wie installiere ich Phantomjs?
PhantomJs k?nnen über NPM (Knotenpaketmanager) installiert werden. Sie k?nnen den Befehl "NPM Phantomjs" im Terminal oder in der Eingabeaufforderung verwenden.
Welche Rolle spielt der kopflose Webkit beim serverseitigen Rendering?
Headless Webkit spielt eine entscheidende Rolle beim serverseitigen Rendering, da der Server Javascript-renderierte Seiten vorrenderen, sie in HTML konvertieren und dann an den Client senden. Dies verbessert die Leistung und SEO Ihrer Webanwendung.
Kann ich Headless Webkit für automatisierte Tests verwenden?
Ja, Headless Webkit ist ein hervorragendes Tool für automatisierte Tests. Sie k?nnen Tests in einer echten Browserumgebung ausführen, ohne dass eine sichtbare Benutzeroberfl?che erforderlich ist.
Wie installiere ich Headless Webkit?
Der Installationsprozess von Headless WebKit h?ngt von dem spezifischen Tool ab, das Sie verwenden. Wenn Sie beispielsweise Puppeteer verwenden, k?nnen Sie es über NPM mit dem Befehl "NPM installieren puppeteerer" installieren.
Was sind die Vorteile der Verwendung von Kopflosen Webkit im Vergleich zu herk?mmlichen automatisierten Browsern?
Headless Webkit hat mehrere Vorteile gegenüber herk?mmlichen Browsern in der Automatisierung. Es ist schneller, weil es keine Zeit braucht, um das Bild zu machen. Es erm?glicht auch automatisiertes, skriptierbares Surfen, das sehr nützlich für das Testen und das Webkriechen ist.
Das obige ist der detaillierte Inhalt vonKopfloses Webkit und Phantomjs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

JavaScript-Array-integrierte Methoden wie .Map (), .filter () und .Reduce () k?nnen die Datenverarbeitung vereinfachen. 1) .Map () wird verwendet, um Elemente eins in eins um Neuarrays zu konvertieren; 2) .Filter () wird verwendet, um Elemente durch Bedingung zu filtern; 3) .Reduce () wird verwendet, um Daten als einzelner Wert zu aggregieren; Missbrauch sollte bei der Verwendung vermieden werden, was zu Nebenwirkungen oder Leistungsproblemen führt.

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.

Ereignisblasen verbreiten sich vom Zielelement nach au?en zum Vorfahrknoten aus, w?hrend Ereignisfassungen sich von der ?u?eren Schicht nach innen zum Zielelement ausbreiten. 1. Ereignisblasen: Nach dem Klicken auf das untergeordnete Element l?st das Ereignis den H?rer des übergeordneten Elements nach oben aus. Nach dem Klicken auf die Schaltfl?che gibt es beispielsweise zuerst die untergeordnete und dann entzündete Eltern aus. 2. Ereigniserfassung: Stellen Sie den dritten Parameter auf True ein, so dass der H?rer in der Erfassungsstufe ausgeführt wird, z. B. das Ausl?sen des Capture -Listeners des übergeordneten Elements, bevor Sie auf die Schaltfl?che klicken. 3. Praktische Verwendungszwecke umfassen ein einheitliches Management von Ereignissen für Kinderelemente, Vorverarbeitung und Leistungsoptimierung von Abfangen. V.
