Nous ne sommes pas responsables des dommages causés par le contenu de cet article. Cet article a été écrit comme un passe-temps personnel et n'a rien à voir avec l'entreprise à laquelle j'appartiens. De plus, nous ne recommandons pas d'enfreindre les règles d'entreprise.
J'ai vérifié les Conditions d'utilisation, mais je n'ai trouvé aucune description interdisant le fonctionnement automatique depuis l'ordinateur. (Si quelqu'un remarque que vous oubliez, faites-le moi savoir. Je m'arrêterai tout de suite.)
(6) Les actes qui imposent une charge excessive à ce service, aux sites de contenu accessibles via ce service et aux réseaux ou systèmes de fournisseurs d'informations.
(13) Actes pouvant interférer avec le fonctionnement de ce service par notre société
Nous avons déterminé qu'il n'y a pas de problème car cela n'inclut pas le traitement pour accès excessif.
(16) Autres actes que la Société juge inappropriés
S'il vous plaît, MoneyForward, ne le jugez pas inapproprié
La fréquentation est estampillée à la même heure tous les matins et le départ est estampillé à la même heure. C'est une déclaration complètement longue. Ce n'est pas quelque chose que les gens font. Ce sera donc automatisé. (Nous attendons le Tsukkomi que le sens de l'estampage n'est pas bon)
Le code est disponible sur Github. Tout le code n'est pas inclus dans l'article, donc si vous voulez en savoir plus, veuillez consulter le code directement. Je pense qu'il existe un moyen plus élégant, alors n'hésitez pas à lancer un problème ou un PR. S'il vous plaît. https://github.com/Haruka0522/AutoMFKintai
Accédez aux pages Web tamponnées à partir de Python à l'aide de Selenium ↓ Jugement vacances / jour de la semaine en utilisant datetime et jpholiday ↓ Cliquez sur le bouton lorsque l'heure de travail / congé prédéfinie est atteinte
C'est simple!
id_box = self.driver.find_element_by_name("employee_session_form[office_account_name]")
id_box.send_keys(self.company_id)
mail_box = self.driver.find_element_by_name("employee_session_form[account_name_or_email]")
mail_box.send_keys(self.mail)
password_box = self.driver.find_element_by_name("employee_session_form[password]")
password_box.send_keys(self.password)
login_button = self.driver.find_element_by_name("commit")
login_button.click()
Après avoir accédé à l'écran de connexion, spécifiez la zone de saisie par le nom de l'élément et saisissez-y les informations de connexion. Le nom de cet élément peut être trouvé en utilisant le mode développeur en y accédant avec chrome et en appuyant sur la touche F12. C'était une percée de l'écran de connexion qui devait être difficile, mais il était possible de percer facilement.
Si vous codez en dur le mot de passe, etc. sur le code source et le téléchargez sur Github par erreur, ce sera difficile, alors prenons une méthode telle que l'écriture du mot de passe, etc. dans un fichier texte appelé pass.txt et le lisons. Si vous supprimez pass.txt de la gestion git avec .gitignore, vous n'avez pas à vous soucier de pousser accidentellement.
actions = ActionChains(self.driver)
actions.move_by_offset(480, 250)
actions.click()
actions.perform()
C'est là que j'ai lutté sobrement. Tenter de cliquer en spécifiant l'élément du bouton de tampon n'a pas fonctionné, et comme onclick () a été écrit, j'ai essayé d'exécuter Javascript directement, mais pour une raison quelconque, cela n'a pas fonctionné. Par conséquent, bien que ce ne soit pas une très bonne méthode, j'ai pris la méthode de spécifier les coordonnées de l'écran et de cliquer. Étant donné que la taille de la fenêtre de Chrome est fixée dans le paramètre initial, je pense que cela fonctionnera même si l'environnement change, mais honnêtement, ce n'est pas élégant, je voudrais donc l'améliorer à l'avenir.
Je ne veux pas tamponner accidentellement les samedis et dimanches. Dans mon cas, je travaille essentiellement les jours de la semaine, donc je l'ai configuré pour tamponner uniquement les jours de semaine.
def is_holiday(date):
return date.weekday() >= 5 or jpholiday.is_holiday(date)
J'ai utilisé la bibliothèque datetime et la bibliothèque jpholiday pour déterminer les jours de la semaine. J'ai utilisé datetime pour juger de simples samedis et dimanches, et jppoliday pour juger les jours fériés.
https://qiita.com/hid_tanabe/items/3c5e6e85c6c65f7b38be
while True:
dt_now = datetime.datetime.now()
if is_holiday(datetime.date.today()): #Jugement en semaine
continue
if dt_now.hour == start_time.hour and dt_now.minute == start_time.minute:
operator.syukkin()
elif dt_now.hour == end_time.hour and dt_now.minute == end_time.minute:
operator.taikin()
else:
time.sleep(wait_time)
En l'exécutant sur un ordinateur fonctionnant 24 heures sur 24 (Razpai a l'air bien avec l'économie d'énergie), il tamponnera automatiquement. Je voudrais pouvoir gérer des vacances uniques en coopération avec Google Agenda, etc., et je voudrais avoir un système qui ne nécessite pas d'écrire un tel script en premier lieu. J'ai le sentiment que je pourrais me mettre en colère de tous côtés, mais est-ce que ça va ...?
Recommended Posts