J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome

avant J'ai fait un processus d'exécution périodique avec Selenium et Python Je l'ai fait, mais cela a cessé de fonctionner avant que je ne le sache ... Donc, même si je reconstruis l'environnement avec le dernier Firefox et le sélénium, cela ne fonctionne pas. (Besoin d'un pilote gecko? Implicitly_wait ne fonctionne pas? Centos6 ne fonctionne pas? Vous ne pouvez pas fonctionner en parallèle?

Donc, je suis passé à CentOS 7 et Chrome et j'ai essayé de créer l'environnement.

environnement

Construire

Selenium

installation de sélénium


yum install python-pip
pip install selenium

Xvfb

Installation de Xvfb


yum install xorg-x11-server-Xvfb

Créer un service Xvfb


vim /usr/lib/systemd/system/Xvfb.service

/usr/lib/systemd/system/Xvfb.service


[Unit]
Description=Virtual Framebuffer X server for X Version 11

[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/Xvfb
ExecStart=/usr/bin/Xvfb $OPTION
ExecReload=/bin/kill -HUP ${MAINPID}

[Install]
WantedBy=multi-user.target

Créer un fichier de configuration de variable d'environnement Xvfb


vim /etc/sysconfig/Xvfb

/etc/sysconfig/Xvfb


# Xvfb Enviroment File
OPTION=":1 -screen 0 1366x768x24"

Démarrer le service Xvfb


systemctl enable Xvfb
systemctl start Xvfb

Chrome

Créer un fichier de référentiel Chrome


vim /etc/yum.repos.d/google-chrome.repo

bash:/etc/yum.repos.d/google-chrome.repo


[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

google-chrome-installation stable


yum install google-chrome-stable

Pour l'affichage japonais

Installation de polices japonaises


yum install ipa-pgothic-fonts.noarch

ChromeDriver - WebDriver for Chrome : Downloads Téléchargez le pilote approprié à partir de. Cette fois, la version 2.29.

Installation du pilote Chrome


wget http://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
mv chromedriver /usr/local/bin
rm chromedriver_linux64.zip

J'ai essayé d'incorporer le contenu de construction ci-dessus dans l'outil de gestion de configuration "itamae". Si vous aimez, s'il vous plaît.  => https://github.com/kotanbo/itamae-selenium-centos7 (Le modèle de CentOS6 est décrit dans certains (Xvfb), mais j'ai abandonné la construction avec CentOS6 ...)

la mise en oeuvre

ChromeDriver - WebDriver for Chrome : Getting started Voici un exemple en référence à.

exemple de python


# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import os, time, datetime, re, util, sys
import selenium.webdriver.chrome.service as service

class Sample():
	def __init__(self):
		self.aservice = service.Service('/usr/local/bin/chromedriver')
		self.aservice.start()
		capabilities = {'chrome.binary': '/usr/bin/google-chrome-stable', "chromeOptions": {"args": ['--no-sandbox']}}
		self.driver = webdriver.Remote(self.aservice.service_url, capabilities)
		self.driver.implicitly_wait(3)
		self.base_url = "http://example.jp/"

	def __del__(self):
		self.driver.close()

	def sample(self):
		driver = self.driver

		try:
			driver.get(self.base_url + "/home")
			driver.find_element_by_xpath("//a[@id='LoginButton']/img").click()
		except:
		finally:

sample = Sample()
sample.sample()

échantillon cron


0 9 * * * export DISPLAY=localhost:1.0; python /root/selenium/sample.py
0 9 * * * export DISPLAY=localhost:1.0; python /root/selenium/sample.py

0 4 * * * pkill -KILL -f chromedriver

point

référence

Démarrez Xvfb en tant que démon avec systemd Installer Chrome sur CentOS 7

Recommended Posts

J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
Je veux faire un jeu avec Python
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
J'ai essayé de créer facilement un système de présence entièrement automatique avec Selenium + Python
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
[1 hour challenge] J'ai essayé de créer un site de bonne aventure qui soit trop adapté à Python
Un mémorandum lors de l'acquisition automatique avec du sélénium
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
Fractal pour faire et jouer avec Python
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Un mémo contenant Python2.7 et Python3 dans CentOS
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
J'ai essayé un langage fonctionnel avec Python
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
J'ai essayé de créer des taureaux et des vaches avec un programme shell
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai essayé de détecter facilement les points de repère du visage avec python et dlib
J'ai créé une API Web
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
Je veux faire un changeur de voix en utilisant Python et SPTK en référence à un site célèbre
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai créé un outil pour parcourir automatiquement plusieurs sites avec Selenium (Python)
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
J'ai essayé de créer un service de raccourcissement d'url sans serveur avec AWS CDK