Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen

Vor Ich habe einen regelmäßigen Ausführungsprozess mit Selenium und Python durchgeführt Ich habe es getan, aber es hat aufgehört zu funktionieren, bevor ich es wusste ... Selbst wenn ich die Umgebung mit dem neuesten Firefox und Selen wieder aufbaue, funktioniert es nicht. (Brauchen Sie einen Geckodriver? Implizit funktioniert das Warten nicht? Kann centos6 nicht parallel ausführen? Kann nicht parallel ausgeführt werden?

Also wechselte ich zu CentOS 7 und Chrome und versuchte, die Umgebung aufzubauen.

Umgebung

Bauen

Selenium

Seleninstallation


yum install python-pip
pip install selenium

Xvfb

Xvfb-Installation


yum install xorg-x11-server-Xvfb

Erstellen Sie einen Xvfb-Dienst


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

Erstellen Sie eine Einstellungsdatei für Xvfb-Umgebungsvariablen


vim /etc/sysconfig/Xvfb

/etc/sysconfig/Xvfb


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

Starten Sie den Xvfb-Dienst


systemctl enable Xvfb
systemctl start Xvfb

Chrome

Erstellen Sie eine Chrome-Repository-Datei


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-stabile Installation


yum install google-chrome-stable

Für japanische Anzeige

Installation japanischer Schriftarten


yum install ipa-pgothic-fonts.noarch

ChromeDriver - WebDriver for Chrome : Downloads Laden Sie den entsprechenden Treiber von herunter. Diesmal Version 2.29.

Installation des Chrome-Treibers


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

Ich habe versucht, die oben genannten Konstruktionsinhalte in das Konfigurationsmanagement-Tool "itamae" zu integrieren. Wenn Sie möchten, bitte.  => https://github.com/kotanbo/itamae-selenium-centos7 (Das Muster von CentOS6 ist in einigen (Xvfb) beschrieben, aber ich habe das Bauen mit CentOS6 aufgegeben ...)

Implementierung

ChromeDriver - WebDriver for Chrome : Getting started Das Folgende ist ein Beispiel mit Bezug auf.

Python-Beispiel


# -*- 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()

Cron Probe


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

Punkt

Referenz

Starten Sie Xvfb als Daemon mit systemd Chrome unter CentOS 7 installieren

Recommended Posts

Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte ein Spiel mit Python machen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Ich habe versucht, mit Selenium + Python einfach ein vollautomatisches Anwesenheitssystem zu erstellen
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
[1 Stunde Herausforderung] Ich habe versucht, eine Wahrsagerseite zu erstellen, die für Python zu geeignet ist
Ein Memorandum beim automatischen Erwerb mit Selen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Fraktal zum Erstellen und Spielen mit Python
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Ein Memo mit Python2.7 und Python3 in CentOS
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
Ich habe eine Web-API erstellt
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
[AWS] [GCP] Ich habe versucht, die Verwendung von Cloud-Diensten mit Python zu vereinfachen
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
[Zaif] Ich habe versucht, den Handel mit virtuellen Währungen mit Python zu vereinfachen
Ich habe versucht, einen URL-Verkürzungsdienst mit AWS CDK serverlos zu machen