[PYTHON] Afficher un écran qui nécessite une connexion à l'affichage numérique

Chose que tu veux faire

Je souhaite afficher l'écran d'un service externe qui nécessite une connexion avec la signalisation qui affiche le fichier image sous forme de diaporama. C'est un peu difficile à comprendre, mais cela ressemble à ce qui suit.

Quoi utiliser

Flux global

  1. Lancez Chrome à l'aide de Selenium
  2. Accédez à un service externe et connectez-vous automatiquement (avec Selenium)
  3. Accédez à l'écran que vous souhaitez afficher et capturer l'image (avec Selenium)
  4. Enregistrez l'image dans un dossier pour publier une signalétique (avec Selenium)
  5. Exécutez périodiquement le flux ci-dessus à l'aide du planificateur de tâches

Code source

Il serait utile que vous puissiez lire le nom du fichier, la destination de sauvegarde, les informations de connexion, etc. selon le cas.

import os
import sys
import time
import datetime
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary

# File Name
now = datetime.datetime.now()
filename = "image/screen_" + now.strftime('%Y%m%d_%H%M%S') + ".png "
FILENAME = os.path.join(os.path.dirname(os.path.abspath(__file__)), filename)

# set driver and url
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
url = 'https://xxxx/xxxx/'
driver.get(url)

# ID/Entrez PASS (ajustement requis pour chaque site)
id = driver.find_element_by_name("xxxx-xxxx")
id.send_keys("xxxx")
password = driver.find_element_by_name("xxxx-xxxx")
password.send_keys("xxxx")
time.sleep(1)

#Cliquez sur le bouton de connexion (cela nécessite un ajustement pour chaque site)
login_button = driver.find_element_by_name("xxxx")
login_button.click()

# get width and height of the page
w = driver.execute_script("return document.body.scrollWidth;")
h = driver.execute_script("return document.body.scrollHeight;")

# set window size
driver.set_window_size(1920,1080)
time.sleep(1)

# Get Screen Shot
print ("Get Screen Shot")
driver.save_screenshot(FILENAME)

# Close Web Browser
driver.quit()

Résumé

Pour le moment, j'ai pu faire ce que je voulais faire avec le flux ci-dessus. Après cela, je le fais actuellement dans un environnement local, donc je veux déplacer cela vers un environnement de serveur. Maintenant que je comprends le flux général, je sens que je peux le gérer si j'enquête.

Un petit mot

Dans mon environnement, j'ai attribué le dossier de publication de signalisation au lecteur réseau, mais lorsque j'ai démarré python directement avec le planificateur de tâches, l'accès au lecteur réseau ne fonctionnait pas, j'ai donc créé un fichier batch séparé. J'ai attribué un lecteur réseau sur le lot, puis j'ai démarré python et cela a fonctionné. Ainsi, à l'heure actuelle, le mécanisme est tel que les fichiers batch sont exécutés régulièrement.

Recommended Posts

Afficher un écran qui nécessite une connexion à l'affichage numérique
Créer un écran de connexion Django
Créer un écran de connexion dans Django all auth
J'ai fait un script pour afficher des pictogrammes
Création d'un logiciel qui reflète l'écran Android sur un PC 2 Édition tactile en temps réel
Une histoire sur l'implémentation d'un écran de connexion avec django
[Wagtail] Ajouter une page de connexion au projet Wagtail
Invite à donner un nom différent pour chaque connexion