Les personnes expérimentées qui utilisent principalement PHP parlent du 5ème jour après le démarrage de Python (sélénium) PHP vs Python

introduction

Cette fois, le but est d'utiliser le sélénium pour contrôler le navigateur Chrome et télécharger les fichiers stockés dans le service WEB. Un autre objectif important est de faire le même téléchargement en PHP et Python et de comparer les résultats. Le but initial du téléchargement était de joindre un e-mail WEB, mais maintenant c'est surtout possible avec du code PHP tel que Slack et Facebook Cybozu. Un certain éditeur qui a entendu cette histoire s'est fait dire que c'était un hack, mais c'est fondamentalement la même chose que de se connecter et de télécharger par vous-même, donc c'est un bon processus de le faire fièrement. Ci-dessous, PHP utilisera sélénium-webdriver, qui semble maintenant plus compliqué que Python. Lors de l'exécution sur PHP, je me suis référé à l'article suivant. Il existe diverses préparations décrites dans cet article. "Faire fonctionner automatiquement Chrome avec PHP en utilisant du sélénium" Une fois la préparation terminée, démarrez sélénium.

1. 1. Édition PHP (à partir du sélénium)

java -jar selenium-server-standalone.jar &
2. Version PHP (connectez-vous et allez télécharger)

Ce code comporte des parties non intentionnelles. En conséquence, j'ai utilisé le code parce que j'ai pu me connecter et le télécharger avec succès par essais et erreurs. Par exemple, je n'ai pas besoin d'une capture d'écran, mais je l'ai laissé tel quel parce que je pouvais le télécharger lorsque je l'ai pris. En PHP, le sélénium peut être plus difficile que cela. J'ai hâte de voir ce qui se passera si je fais la même chose avec Python à partir de maintenant, mais je me demande si c'est correct de le faire dans le même environnement car je dois également installer le sélénium séparément pour Python.

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;

//Spécifiez le chemin du pilote Chrome téléchargé
$screenPath = $relative.'/g_screenshot.png';
$driverPath = '/usr/local/bin/chromedriver';
putenv("webdriver.chrome.driver=" . $driverPath);
//Pour spécifier les options lors du démarrage de Chrome
$options = new ChromeOptions();
//Spécifiez pour commencer sans tête
$options->addArguments([
'--no-sandbox',
'--headless',    //Spécifié pour commencer sans tête. La spécification du dossier de téléchargement n'est pas valide.
'--disable-gpu',    //Drapeaux sans tête et provisoirement requis
'--ignore-certificate-errors',  //N'affiche pas la page d'erreur du certificat de sécurité SSL (page «Le certificat de sécurité de ce site n'est pas approuvé»).
]);
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = ChromeDriver::start($caps, null, 1000*60*5, 1000*60*10);
$path = dirname(__FILE__).'/data'; #Chemin du serveur WEB à télécharger (chemin de ce programme)
$this->setDownloadDir($driver, $path);
$driver->manage()->window()->maximize();

//Connexion virtuelle,$atarget est le lien du fichier à télécharger
$driver->get($wtarget); #Le fichier lié à sera téléchargé.
$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();
//Connexion virtuelle terminée
3. 3. À partir de l'importation de sélénium, le pilote Web ne fonctionne pas dans un environnement construit avec PHP

C'est un problème Python 3.7.5 (par défaut, 1 novembre 2019, 19:15:52) donne toujours une erreur, mais une autre Python 2.7.17 (par défaut, 25 octobre 2019, 10:08:31) fonctionne correctement. C'est peut-être la relation entre les modules que les deux environnements appellent.

webdriver.py



#C'est un mémo sans fin pour moi.
from selenium import webdriver # from <module> import <driver>
# ImportError: cannot import name 'webdriver' from 'selenium' (unknown location)

Je pense que c'est presque un problème de chemin, mais Python 3.7.5 est toujours en erreur.

4. C'est peut-être un problème de version google-chrome et chromedriver

J'étais en train de tester avec un échantillon Pytho lorsque j'ai commencé le sélénium avec PHP, mais à ce moment-là, l'échantillon Python fonctionnel s'est arrêté lorsque j'ai chargé le pilote Web. L'erreur indique la version de google-chrome et la version de chromedriver, et on a l'impression qu'elle plante. Pour PHP, la modification de google-chrome et chromedriver actuellement implémentés entraînera le blocage de google-chrome. Il semble y avoir une raison à cette relation. Je suis un peu inquiet.

Recommended Posts

Les personnes expérimentées qui utilisent principalement PHP parlent du 5ème jour après le démarrage de Python (sélénium) PHP vs Python
Les personnes expérimentées qui utilisent principalement PHP parlent du 4ème jour de démarrage de Python (sous-processus)
Les personnes expérimentées qui utilisent principalement PHP parlent du 4ème jour de démarrage de Python (sous-processus)
Les personnes expérimentées qui utilisent principalement PHP parlent du 5ème jour après le démarrage de Python (sélénium) PHP vs Python
À propos des fonctionnalités de Python
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python
À propos de la liste de base des bases de Python
À propos du code Python pour une moyenne mobile simple en supposant l'utilisation de Numba
À propos de l'environnement virtuel de Python version 3.7