Ich denke, dass es aufgrund der Turbulenzen des neuen Virus viele Menschen gibt, die in der Telearbeit / Fernarbeit arbeiten. Die Telearbeit wurde in der Firma gestartet, für die ich mit der Erklärung eines Notfalls arbeite. Da es jedoch problematische Regeln gab, habe ich versucht, sie mit Selenium und Python einfach zu automatisieren.
Übrigens haben wir unmittelbar nach der Stornierung der Notfallerklärung im Basisbüro angefangen zu arbeiten und manchmal von zu Hause aus gearbeitet.
Bitte verwenden Sie ** Selbstverantwortung **, um diesen Artikel vorzustellen. Es gibt auch einen solchen Ansatz, ich hoffe, Sie können ihn mit einem Gefühl der Temperatur sehen. Ich überlasse es Ihnen, sich vorzustellen, ob ich es benutze.
Dieses Mal handelt es sich nur um das interne Originalsystem, das auf dem internen Server installiert ist. Natürlich gibt es viele Dienste, für die die Automatisierung verboten ist. Wenn Sie sie als externen Dienst verwenden, stellen Sie bitte sicher, dass sie nicht gegen die Nutzungsbedingungen verstoßen, bevor Sie Ihr eigenes Risiko eingehen.
Nachdem die Einführung beendet ist, können wir sie sofort automatisieren.
Ich denke, es gibt verschiedene Telearbeitsregeln auf der Welt, aber dieses Mal werde ich auf der Grundlage der folgenden Umgebung und Regeln sprechen.
Umgebung
Regeln für den Beginn der Telearbeit
--Schreiben Sie die heute geplanten Arbeitszeiten im Telearbeitskanal des Firmenchats
Mit anderen Worten, Sie müssen kurz vor Arbeitsbeginn (9:00 Uhr) eine Verbindung zum VPN herstellen, jeden Tag ähnliche Inhalte per Chat und E-Mail senden und im Arbeitsverwaltungssystem des Unternehmens registrieren. Damit muss ich vor Arbeitsbeginn aufstehen, den PC starten, das VPN verbinden usw., damit ich morgens nicht mehr Zeit habe, obwohl mir die Pendelzeit ausgeht.
~~ Vor allem deshalb ist es schwierig, zu Beginn der Arbeit aufzustehen. ~~
Glücklicherweise kann auf alle internen Systeme über einen Browser zugegriffen werden. Versuchen Sie also, Selenium, das mit der Browserautomatisierung vertraut ist, in Python auszuführen.
Der Chat, der zu schreibende Kanal und der Wortlaut sind festgelegt, so dass er auf die gleiche Weise wie ein Mensch problemlos automatisiert werden kann. Nehmen wir als Beispiel das Chat-Tool "Mattermost" vor Ort.
driver = webdriver.Chrome()
#Melden Sie sich bei Mattermost an
driver.get("http://192.168.0.100/system-dev/channels/remotework") #Telearbeitskanal
time.sleep(5)
driver.find_element_by_name("loginId").send_keys("[email protected]") #Nutzername(Mail Adresse)
driver.find_element_by_name("password").send_keys("Password") #Passwort
time.sleep(1)
driver.find_element_by_id("loginButton").click() #Drücken Sie die Login-Taste
time.sleep(5)
chatbox = driver.find_element_by_id("post_textbox") #Chat-Eingabefeld abrufen
#Inhalt von hier zu schreiben
chatbox.send_keys("Guten Morgen. Es ist ein Firmentier.")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("[Heutige Arbeitszeit]")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("Geplante Arbeitszeit: 09:00 - 18:00")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("【Mittagspause(1.0h)】")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("Geplante Pausenzeit: 12:00 - 13:00")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("[Andere]")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("Keiner")
#Bisher
chatbox.submit()
time.sleep(5)
driver.quit()
Starten Sie auf diese Weise den Browser → greifen Sie auf die URL des angegebenen Kanals zu → Anmelden → Das Schreiben von Chats wird automatisiert.
time.sleep
ist ein Prozess, der nur auf den Teil wartet, an dem der Prozess nach dem Laden der Seite ausgeführt zu werden scheint.
Es funktioniert wahrscheinlich ohne, aber es ist eine Versicherung.
Wenn Sie den Browser mit Selenium starten, startet er im Grunde genommen in einem leeren Zustand wie einem geheimen Fenster, in dem die ID und das Kennwort nicht gespeichert werden. Sie müssen also den Anmeldevorgang eingeben, müssen dies jedoch manuell tun Es ist das gleiche wie die zu erledigende Arbeit.
Ich gebe den Inhalt des Chats mit einem Zeilenumbruch ein, aber in meiner Umgebung kann ich dies mit Umschalt + Eingabetaste tun. Ich denke, es gibt ein Tool, das eine Zeile mit Strg + Eingabetaste bricht. Ändern Sie dies entsprechend.
Testen Sie danach beim Testen, indem Sie einen Kanal für nur eine Person erstellen. Wenn Sie einen Fehler in der Stoßproduktion machen, werden Sie wahrscheinlich misstrauisch sein.
Auf das Mailsystem kann über einen Browser zugegriffen werden, und Mail kann über den Browser empfangen und gesendet werden. Daher habe ich versucht, sie zu automatisieren. Das Mailsystem, das mit dem Browser verwendet werden kann, wird von einem anderen Unternehmen betrieben, sollte jedoch in Ordnung sein, da in den Nutzungsbedingungen nicht angegeben ist, dass die Automatisierung nutzlos ist.
Starten Sie den Browser → Greifen Sie auf die URL des Mail-Systems zu → Anmelden → Neue Mail erstellen → Geben Sie den Inhalt der Mail ein → Senden Sie sie. Dies unterscheidet sich nicht von ehrlichem Chat.
Der Code unterscheidet sich nicht wesentlich vom vorherigen, aber da die E-Mail eine Regel enthielt, nach der das Datum in den Betreff eingefügt werden soll, werde ich die Verarbeitung als Beispiel darauf schreiben.
"[Viehzuchtprojekt des Unternehmens] [Beginn der Beschäftigung]" + datetime.date.today().strftime("%Y%m%d") + "Fortschrittsbericht (Taro Firmentier)"
Das Thema musste so etwas wie "[Projektname] [Beginn der Beschäftigung] Fortschrittsbericht 2020/10/01 (Name)" sein, also bekam ich das Datum zum Zeitpunkt der Ausführung und automatisierte es.
Danach wird der Bildschirm für die E-Mail-Komposition in einem separaten Fenster angezeigt. Daher habe ich einen Prozess zum Ändern des Fokusfensters (Operationszielfenster) hinzugefügt.
driver.switch_to.window(driver.window_handles[1])
Es scheint, dass Fenster von einer Zeichenfolge verwaltet werden, die als Fensterhandles bezeichnet wird. Dieses Mal wird sie jedoch nur einmal angezeigt. Geben Sie also "driver.window_handles [1]" an und geben Sie das erste geöffnete Fenster "driver.window_handles [0]" an Es wird als Fenster angegeben, neben dem geöffnet wird.
Es scheint, dass Sie "driver.window_handles [-1]" verwenden können, um das zuletzt geöffnete Fenster anzugeben.
Es ist fast das gleiche, wenn Sie so weit gehen. Klicken Sie einfach auf die URL → Anmelden → Schreiben Sie etwas wie operieren. Während des Betriebs müssen Sie das Element nur mit "id" oder "class name" angeben, sodass Sie keine andere Wahl haben, als es mit den Entwicklertools aufzunehmen.
Nachdem die Betriebsautomatisierung in Selen abgeschlossen ist, besteht der nächste Schritt darin, die geplante Ausführung zu implementieren.
Insbesondere müssen diese automatisierten Vorgänge "so ausgeführt werden, als ob sie bei der Arbeit wären".
In diesem Beispiel ist es 9:00 Uhr. Wenn Sie jedoch um 9:00 Uhr beginnen, haben Sie um 9:00 Uhr einen Sitzplatz?
Ich glaube, ich werde kurz vor 9:00 Uhr sitzen. Auf der anderen Seite gibt es Zeiten, in denen Sie einige Minuten Verspätung haben, z. B. eine leichte Verspätung im Zug oder ein verpasster Zug, oder? Selbst wenn Sie jeden Tag den gleichen Zug nehmen, kann die Zeit, zu der Sie zur Arbeit gehen, je nach Wetter und Temperatur um einige Minuten variieren.
Mit anderen Worten, es ist unnatürlich, wenn Chats und E-Mails nicht zu einer etwas zufälligen Zeit kurz vor 9:00 Uhr gesendet werden.
Dieses Mal implementieren wir den Prozess, um den Zeitplan zu einer zufälligen Zeit von 8:50 bis 9:00 Uhr auszuführen.
chattime = ""
def timeset():
chattime = random.randint(50, 60)
if chattime < 10:
#Wenn es weniger als 10 Minuten sind, füllen Sie es mit Null
chattime = "0" + str(chattime)
if chattime == 60:
#9 für 60 Minuten:Interpretiere als 00
schedule.every().day.at("09:00").do(job)
print("09:00")
else:
schedule.every().day.at("08:" + str(chattime)).do(job)
print("08:" + str(chattime))
schedule.every().day.at("08:00").do(timeset)
while True:
schedule.run_pending()
time.sleep(60)
So entschied ich mich, jeden Tag um 8:00 Uhr mit einer zufälligen Funktion Kontakt zur Arbeit aufzunehmen, und als diese Zeit kam, beschloss ich, Kontakt mit der Arbeit aufzunehmen.
Es ist ziemlich rau in Bezug auf die Verarbeitung, aber nachdem alle Funktionen definiert wurden, werden beim letzten "while True" unendlich viele Schleifen ausgeführt, alle Zeitpläne ausgeführt → der Ruhezustand wird 1 Minute lang wiederholt.
Registrieren Sie zum Zeitpunkt der Ausführung einen Zeitplan für die Ausführung von "Zeitsatz" um 8:00 Uhr mit "Zeitplan.jeder (). Tag.at (" 08: 00 ") .do (Zeitsatz)" und in "Zeitsatz" Zufallszahlen von 50 bis 60 werden generiert und ein diesen Zahlen entsprechender Zeitplan wird zusätzlich registriert.
Um mit anderen als 50-60 umzugehen, wird der Anfang, wenn er 10 Minuten oder weniger beträgt, mit 0 gefüllt, und wenn 60 herauskommt, wird er als 9:00 interpretiert. Die Anforderungen wurden jedoch erfüllt, so dass es in Ordnung ist.
#!python3.8
import time
import datetime
import schedule
import random
import sys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
def job():
driver = webdriver.Chrome()
#Melden Sie sich bei Mattermost an
driver.get("http://192.168.0.100/system-dev/channels/remotework") #Telearbeitskanal
time.sleep(5)
driver.find_element_by_name("loginId").send_keys("[email protected]") #Nutzername(Mail Adresse)
driver.find_element_by_name("password").send_keys("Password") #Passwort
time.sleep(1)
driver.find_element_by_id("loginButton").click() #Drücken Sie die Login-Taste
time.sleep(5)
chatbox = driver.find_element_by_id("post_textbox") #Chat-Eingabefeld abrufen
#Inhalt von hier zu schreiben
chatbox.send_keys("Guten Morgen. Es ist ein Firmentier.")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("[Heutige Arbeitszeit]")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("Geplante Arbeitszeit: 09:00 - 18:00")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("【Mittagspause(1.0h)】")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("Geplante Pausenzeit: 12:00 - 13:00")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("[Andere]")
chatbox.send_keys(Keys.SHIFT, Keys.ENTER)
chatbox.send_keys("Keiner")
#Bisher
chatbox.submit()
time.sleep(5)
driver.quit()
#E-Mail senden
driver = webdriver.Chrome()
driver.get("https://webmail.example.com/login")
time.sleep(5)
#Anmelde-ID
driver.find_element_by_name("login_id").send_keys("[email protected]")
#Passwort
driver.find_element_by_name("pass").send_keys("password")
time.sleep(1)
driver.find_element_by_xpath("//input[@value='Einloggen']").click()
time.sleep(5)
#Mail-Kompositionsbildschirm
driver.find_element_by_id("smail").click()
time.sleep(5)
driver.switch_to.window(driver.window_handles[1])
#Mail schreiben
driver.find_element_by_id("to").send_keys("[email protected]")
driver.find_element_by_id("subject").send_keys(
"[Viehzuchtprojekt des Unternehmens] [Beginn der Beschäftigung]" + datetime.date.today().strftime("%Y%m%d") + "Fortschrittsbericht (Taro Firmentier)"
)
driver.find_element_by_id("content").send_keys(
"Lieber Herr\n Vielen Dank für Ihre harte Arbeit. Es ist ein Firmentier.\n Ich möchte über den heutigen Arbeitsplan berichten.\n\n [heutige Arbeitszeit]\n Geplante Arbeitszeiten: 09:00 - 18:00\n [Mittagspause(1.0h)】\n Geplante Pausenzeit: 12:00 - 13:00\n [Andere]\n Keine\n------------------------------------------------------------\n Abteilung für Tierentwicklung des Unternehmens Co., Ltd.\n Firmentier Taro/ Taro Shachiku \n mail: [email protected]\n------------------------------------------------------------"
)
#E-Mail senden
driver.find_element_by_id("send_mail").click()
time.sleep(10)
driver.quit()
#Anwesenheitssystemeingang
driver = webdriver.Chrome()
driver.get("http://192.168.0.200/kinmu/login")
time.sleep(5)
driver.find_element_by_id("userId").send_keys("114514")
driver.find_element_by_id("password").send_keys("password")
driver.find_element_by_class_name("login_button").click()
time.sleep(10)
yesterday = datetime.date.today() - datetime.timedelta(days=1)
driver.find_element_by_id(
"dailyList["
+ datetime.date.strftime(yesterday, "%d")
+ "].orderList[0].resultEnterTime"
).send_keys("0900")
driver.find_element_by_name("update").click()
time.sleep(10)
alert = driver.switch_to.alert
alert.accept()
time.sleep(10)
driver.quit()
sys.exit()
chattime = ""
def timeset():
chattime = random.randint(50, 60)
if chattime < 10:
chattime = "0" + str(chattime)
if chattime == 60:
schedule.every().day.at("09:00").do(job)
print("09:00")
else:
schedule.every().day.at("08:" + str(chattime)).do(job)
print("08:" + str(chattime))
schedule.every().day.at("08:00").do(timeset)
while True:
schedule.run_pending()
time.sleep(60)
Es scheint, dass alle Routinearbeiten, die über den Browser ausgeführt werden können, auf diese Weise automatisiert werden können.
Selbst wenn Sie nach 9 Uhr aufstehen, ein Bad nehmen und dann eine Verbindung zum VPN herstellen, scheint es, dass Sie vor 9 Uhr hart arbeiten.
Wenn Sie es tun, bevor Sie am Tag zuvor die Arbeit verlassen, selbst wenn Sie am nächsten Tag etwas spät aufstehen, sieht es so aus, als würden Sie zur Arbeit gehen, also ist es sicher!
Es besteht jedoch die Möglichkeit, dass Chats vor Beginn der Arbeit übersprungen wurden. Daher ist es am wichtigsten, die Dosierung beizubehalten und moderat zu halten.
Ich hoffe, dies wird die Menge der verdammten Arbeit reduzieren, weil "es keine tiefe Bedeutung hat, aber es ist eine Regel".