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)

Hei?e Themen

Java und JavaScript sind unterschiedliche Programmiersprachen, die jeweils für verschiedene Anwendungsszenarien geeignet sind. Java wird für die Entwicklung gro?er Unternehmen und mobiler Anwendungen verwendet, w?hrend JavaScript haupts?chlich für die Entwicklung von Webseiten verwendet wird.

JavaScriptComents AreseessentialFormaintaining, Lesen und GuidingCodeexexecution.1) einzelne Linecommments Arequickickexplanationen.2) Multi-LindexplainComproxlogicorProvedetailedDocumentation.3) InlinecommentsclarifyspecificPartsosensofCode.BestPracticic

Die folgenden Punkte sollten bei der Verarbeitung von Daten und Zeiten in JavaScript festgestellt werden: 1. Es gibt viele M?glichkeiten, Datumsobjekte zu erstellen. Es wird empfohlen, ISO -Format -Zeichenfolgen zu verwenden, um die Kompatibilit?t sicherzustellen. 2. Die Zeitinformationen erhalten und festlegen k?nnen und setzen Sie Methoden fest, und beachten Sie, dass der Monat mit 0 beginnt. 3. Die manuell formatierende Daten sind Zeichenfolgen erforderlich, und auch Bibliotheken von Drittanbietern k?nnen verwendet werden. 4. Es wird empfohlen, Bibliotheken zu verwenden, die Zeitzonen wie Luxon unterstützen. Das Beherrschen dieser wichtigen Punkte kann h?ufige Fehler effektiv vermeiden.

PlatztagsattheBottomofabogpostorwebpageServeSpracticalPurposesforseo, Usexperience und design.1ithelpswithseobyallowingEnginestoaccessKeyword-relevantTagswithoutClutteringHemainContent.2.

JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor

JavaScripthassevenfundamentaldatatypes:number,string,boolean,undefined,null,object,andsymbol.1)Numbersuseadouble-precisionformat,usefulforwidevaluerangesbutbecautiouswithfloating-pointarithmetic.2)Stringsareimmutable,useefficientconcatenationmethodsf

Ereigniserfassung und Blase sind zwei Phasen der Ereignisausbreitung in DOM. Die Erfassung erfolgt von der oberen Schicht bis zum Zielelement, und die Blase ist vom Zielelement bis zur oberen Schicht. 1. Die Ereigniserfassung wird implementiert, indem der UseCapture -Parameter von AddEventListener auf true festgelegt wird. 2. Ereignisblase ist das Standardverhalten, Uscapture ist auf false oder weggelassen. 3. Die Ereignisausbreitung kann verwendet werden, um die Ereignisausbreitung zu verhindern. 4. Event Bubbling unterstützt die Ereignisdelegation, um die Effizienz der dynamischen Inhaltsverarbeitung zu verbessern. 5. Capture kann verwendet werden, um Ereignisse im Voraus abzufangen, wie z. B. Protokollierung oder Fehlerverarbeitung. Das Verst?ndnis dieser beiden Phasen hilft dabei, das Timing und die Reaktion von JavaScript auf Benutzeroperationen genau zu steuern.

Java und JavaScript sind verschiedene Programmiersprachen. 1.Java ist eine statisch typisierte und kompilierte Sprache, die für Unternehmensanwendungen und gro?e Systeme geeignet ist. 2. JavaScript ist ein dynamischer Typ und eine interpretierte Sprache, die haupts?chlich für die Webinteraktion und die Front-End-Entwicklung verwendet wird.
