Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 5. Tag nach dem Start von Python (Selen) PHP gegen Python

Einführung

Dieses Mal besteht der Zweck darin, den Chrome-Browser mithilfe von Selen zu steuern und die im WEB-Dienst gespeicherten Dateien herunterzuladen. Ein weiterer wichtiger Zweck ist es, denselben Download in PHP und Python durchzuführen und die Ergebnisse zu vergleichen. Der ursprüngliche Zweck des Downloads war das Anhängen einer WEB-Mail, aber jetzt ist es meistens mit PHP-Code wie Slack und Facebook Cybozu möglich. Einem bestimmten Redakteur, der diese Geschichte gehört hat, wurde gesagt, dass es sich um einen Hack handelt, aber es ist im Grunde dasselbe wie sich selbst anzumelden und herunterzuladen. Es ist also ein guter Prozess, dies stolz zu tun. Im Folgenden wird PHP einen Selen-Webdriver verwenden, der sich jetzt komplizierter anfühlt als Python. Bei der Ausführung unter PHP habe ich auf den folgenden Artikel verwiesen. Es gibt verschiedene Vorbereitungen, wie in diesem Artikel beschrieben. "Chrome automatisch mit PHP unter Verwendung von Selen betreiben" Starten Sie nach Abschluss der Vorbereitung Selen.

1. 1. PHP Edition (ab Selen)

java -jar selenium-server-standalone.jar &
2. PHP-Version (tatsächlich anmelden und zum Download gehen)

Dieser Code enthält einige unbeabsichtigte Teile. Infolgedessen habe ich den Code verwendet, weil ich mich durch Ausprobieren erfolgreich anmelden und herunterladen konnte. Zum Beispiel brauche ich keinen Screenshot, aber ich habe ihn so belassen, wie er war, weil ich ihn herunterladen konnte, als ich ihn nahm. In PHP kann Selen schwieriger sein. Ich freue mich darauf zu sehen, was passiert, wenn ich von nun an dasselbe mit Python mache, aber ich frage mich, ob es in Ordnung ist, dies in derselben Umgebung zu tun, da ich Selen auch für Python separat installieren muss.

download.php


require_once './vendor/autoload.php';

use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;

//Geben Sie den Pfad des heruntergeladenen Chrome-Treibers an
$screenPath = $relative.'/g_screenshot.png';
$driverPath = '/usr/local/bin/chromedriver';
putenv("webdriver.chrome.driver=" . $driverPath);
//Zum Festlegen von Optionen beim Starten von Chrome
$options = new ChromeOptions();
//Geben Sie an, dass Sie kopflos starten möchten
$options->addArguments([
'--no-sandbox',
'--headless',    //Angegeben, um kopflos zu starten. Die Download-Ordnerspezifikation ist ungültig.
'--disable-gpu',    //Kopflose und vorläufig erforderliche Flaggen
'--ignore-certificate-errors',  //Zeigt die Fehlerseite des SSL-Sicherheitszertifikats nicht an (Seite "Das Sicherheitszertifikat für diese Site ist nicht vertrauenswürdig").
]);
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = ChromeDriver::start($caps, null, 1000*60*5, 1000*60*10);
$path = dirname(__FILE__).'/data'; #Pfad des herunterzuladenden WEB-Servers (Pfad von diesem Programm)
$this->setDownloadDir($driver, $path);
$driver->manage()->window()->maximize();

//Virtueller Login,$atarget ist der Link der herunterzuladenden Datei
$driver->get($wtarget); #Die mit verlinkte Datei wird heruntergeladen.
$element = $driver->findElement(WebDriverBy::name('username'));
$element->sendKeys($wuser);
$element = $driver->findElement(WebDriverBy::name('password'));
$element->sendKeys($wpass);
$element->submit();
$driver->manage()->timeouts()->implicitlyWait(5);
$driver->takeScreenshot($screenPath);
//$driver->manage()->getCookies();
//Virtuelle Anmeldung abgeschlossen
3. 3. Ab Selen importiert der Webdriver nicht in einer mit PHP erstellten Umgebung

Das ist ein Problem Python 3.7.5 (Standard, 1. November 2019, 19:15:52) gibt immer noch einen Fehler aus, aber einen anderen Python 2.7.17 (Standard, 25. Oktober 2019, 10:08:31) funktioniert einwandfrei. Vielleicht ist es die Beziehung zwischen den Modulen, die die beiden Umgebungen aufrufen.

webdriver.py



#Es ist ein endloses Memo für mich.
from selenium import webdriver # from <module> import <driver>
# ImportError: cannot import name 'webdriver' from 'selenium' (unknown location)

Ich denke, es ist fast ein Pfadproblem, aber Python 3.7.5 ist immer noch fehlerhaft.

4. Möglicherweise handelt es sich um ein Problem mit der Version von Google-Chrome und Chromedriver

Ich habe mit Pythos Beispiel getestet, als ich Selen mit PHP gestartet habe, aber zu diesem Zeitpunkt wurde das funktionierende Python-Beispiel gestoppt, als ich den Webdriver geladen habe. Der Fehler zeigt die Version von Google-Chrome und die Version von Chromedriver an und es scheint, als würde es abstürzen. Wenn Sie für PHP das derzeit implementierte Google-Chrome und den Chromedriver ändern, stürzt Google-Chrome ab. Es scheint einen Grund für diese Beziehung zu geben. Ich bin ein wenig besorgt.

Recommended Posts

Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 5. Tag nach dem Start von Python (Selen) PHP gegen Python
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 5. Tag nach dem Start von Python (Selen) PHP gegen Python
Über die Funktionen von Python
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Informationen zur Grundlagenliste der Python-Grundlagen
Informationen zu Python-Code für einfachen gleitenden Durchschnitt unter Verwendung von Numba
Informationen zur virtuellen Umgebung von Python Version 3.7