[PYTHON] Edition supplémentaire pour créer un "outil RPA" car c'est du temps libre

introduction

Merci tout le monde. C'est enp. J'aime mieux l'été que l'hiver. Cet article est un rapport d'étape pour ceux qui essaient désormais de créer des «outils RPA». Veuillez noter qu'il ne décrit pas comment créer des outils RPA ou RPA. Cette fois, j'aimerais vous présenter le RPA qui a été fait comme une extension de # 3 car c'est une édition supplémentaire. C'est un RPA très égoïste, donc cela ressemble à une zone grise, mais merci pour votre coopération.

C'est un problème!

Oui. Le titre est juste ça. Je pense qu'il y a beaucoup de gens qui pensent la même chose.

Pourquoi Mabinogi doit-il être lancé depuis le navigateur?

Cela s'applique non seulement à Mabinogi mais également à tous les jeux lancés uniquement à partir d'un navigateur. __ C'est un tracas d'aller à la page d'accueil un par un! Je veux faire quelque chose! __ </ font> Donc je pense. __ Peut-il être automatisé? __ Vous pouvez maintenant vous connecter automatiquement avec # 3. Par conséquent, vous pouvez vous connecter à Mabinogi. Il ne vous reste plus qu'à cliquer sur le bouton pour lancer le jeu! J'ai commencé à le penser.

Éléments nécessaires à la mise en œuvre

Je vais commencer à automatiser tout de suite, mais voici quelques éléments dont j'ai besoin. Par conséquent, je voudrais les énumérer ici.

__ [Liste des éléments nécessaires à la mise en œuvre] __ __ ・ Python__ __ ・ sélénium__ __ · ChromeDriver__ __ ・ PyOTP__ __ · Profil d'utilisateur qui a lancé le jeu une fois (important) __

De Python à PyOTP, vous avez besoin pour faire fonctionner un navigateur automatiquement. Le dernier "Profil utilisateur qui a lancé le jeu une fois" est utilisé pour résoudre un certain problème. Un profil utilisateur est le fichier __ d'un utilisateur synchronisé avec __Chrome.

Le plus grand mur "dialogue modal"

Eh bien, implémentons-le immédiatement. Cependant, il y a un gros problème. C'est l'existence de __modal dialog __. Une boîte de dialogue modale est une boîte de dialogue __ qui ne peut être utilisée qu'avec la boîte de dialogue __. On a l'impression que le dialogue est sur le point de s'effondrer. Faisons un peu plus facile à comprendre. モーダルダイアログ.png La figure ci-dessus est le dialogue modal en question. Pendant que cette boîte de dialogue est affichée, cliquer sur le fan art de Mabinogi, les annonces, etc. ne fait rien. Une personne qui ne peut utiliser que la boîte de dialogue __ de cette manière s'appelle une boîte de dialogue modale. __ Cependant, __ Cette boîte de dialogue n'a pas été reconnue par le sélénium. Il existe une fonction de __selenium qui appuie sur un bouton dans la boîte de dialogue, mais elle ne répond pas. J'ai essayé d'utiliser javaScript, mais je n'ai pas pu obtenir le bouton car je ne connaissais pas le nom de la classe en premier lieu. Maintenant, j'ai une question pour tous ceux qui jouent à Mabinogi ici. __ Avez-vous vu cette boîte de dialogue? __ Je pense que ceux qui ont joué à Mabinogi pour la première fois auront un nouveau souvenir, mais ceux qui jouent à Mabinogi depuis de nombreuses années sont déjà au-delà de l'oubli. Oui, cette boîte de dialogue ne s'affiche généralement pas après le deuxième __. __ Eh bien, seulement ceux qui ont coché la case. Alors pourquoi disparaît-il? __ N'est-il pas sauvé du côté de Nexon? Si vous pensez, __ incorrect __ </ font>. Cependant, il n'est pas stocké sur la page __web. __ HTML, javaScript, etc. qui créent des pages Web n'ont pas la fonction de sauvegarde des informations </ font> __. Je pense qu'il est possible de le sauvegarder en combinaison avec une base de données, mais ce n'est pas courant. __ Alors quoi? __ La réponse est un petit fichier appelé cookie. Vous avez peut-être entendu parler. Je ne parlerai pas de son fonctionnement en détail, mais il ne sera pas affiché tant qu'il y aura un cookie indiquant __ "J'ai lancé le jeu une fois". </ font> __ Vous n'avez plus à gérer les dialogues modaux ou tout ce que vous ne comprenez plus. Par conséquent, __ "profil d'utilisateur qui a lancé le jeu une fois" devient important. __ Parce que j'ai les cookies dont j'ai besoin.

Apprenez à connaître Chrome

Je sais que je peux utiliser des cookies pour surmonter les dialogues modaux. Cependant, certaines personnes peuvent penser cela.

Dois-je prendre la peine d'utiliser un profil utilisateur?

La réponse est oui. Parce que __Chrome gère les cookies par profil d'utilisateur, c'est __. Cependant, ce "géré par profil utilisateur" n'est que mon impression. __ Par conséquent, veuillez noter que ce n'est pas correct. La raison pour laquelle je me suis senti "géré par le profil utilisateur" est que simplement obtenir le cookie avec __selenium n'a pas résolu le problème de dialogue __. Aussi, je le pensais parce que les cookies que j'ai sont différents pour chaque profil __user. De plus, j'ai essayé d'utiliser le profil utilisateur fourni par défaut, mais je ne l'ai pas utilisé car cela causait des inconvénients. L'inconvénient est que __ le programme sera corrompu lorsque Chrome sera ouvert. Apparemment, cela génère une erreur lorsque le répertoire référencé est couvert. __que se passe-t-il. __ Par conséquent, nous avons préparé un répertoire pour les profils d'utilisateurs individuels.

Enfin implémenté

J'ai parlé à Gudaguda jusqu'à présent, mais le fait est que j'espère que vous pourrez supprimer les deux points suivants. __ · Besoin d'un cookie pour résoudre le problème de dialogue __ __ · Vous pouvez résoudre le problème de la boîte de dialogue en utilisant un profil utilisateur avec les cookies requis __ Oui. Nous allons le mettre en œuvre sur la base de ces deux points. Le programme est le suivant.

nexon.py


#Importer des modules, etc.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import chromedriver_binary
import pyotp
import time

#Paramètres du pilote
options = Options()
PROFILE_PATH = r"Répertoire de profils utilisateur préparé individuellement"
options.add_argument('--incognito')  #Ouvrir le navigateur en mode navigation privée
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument("--user-data-dir=" + PROFILE_PATH)   #Spécification du répertoire du profil utilisateur
options.add_argument("--profile-directory=Profile 1")   #Spécifier un profil utilisateur

#Désignation du conducteur
chrome = webdriver.Chrome(options=options)

chrome.get("https://login.nexon.co.jp/login/?gm=mabinogi")   #Aller à la page de connexion
chrome.implicitly_wait(10)   #Attendez que l'élément souhaité s'affiche (jusqu'à 10 secondes)

#Informations requises pour la connexion
user_name = "user_name"
password = "password"

#Obtenez une zone de texte pour saisir les informations de connexion
element_user = chrome.find_element_by_id("NexonID")
element_password = chrome.find_element_by_id("Password")
element_totp = chrome.find_element_by_id("OTP")

#Entrez le nom d'utilisateur, etc.
element_user.send_keys(user_name)
element_password.send_keys(password)

#Générer un mot de passe à usage unique
totp = pyotp.TOTP("Alphabets utilisés lors de la définition d'un mot de passe à usage unique")
#Définissez le mot de passe à usage unique à l'avance
#Notez les caractères alphanumériques requis

#Entrez le mot de passe à usage unique et appuyez sur Entrée pour confirmer
element_totp.send_keys(totp.now())
element_totp.send_keys(Keys.ENTER)

#Cliquez sur le bouton de démarrage du jeu
btn = chrome.find_element_by_xpath("//div[@id='left']/div[@class='bt-login']/div[@class='btn-web-gamestart']/a")
btn.click()

#Attendez (car le jeu n'a pas démarré sans attendre)
time.sleep(10)

#Fermer Chrome
chrome.quit()

Les cookies semblent être disponibles lorsque vous les exécutez dans votre profil d'utilisateur et vous n'avez rien à faire. Veuillez également noter que le jeu ne démarrera pas si vous utilisez le mode sans tête. De plus, il vous sera demandé l'autorisation d'administrateur pour lancer le jeu, cliquez dessus vous-même. La raison en est que ce n'est pas sous la juridiction qui peut être exploité avec un navigateur Web. Mais malheureusement __ ce programme a un inconvénient fatal. __ __ Le problème de boîte de dialogue se reproduit lorsque le cookie expire. __ Ensuite, vous devrez également lancer le jeu vous-même en utilisant votre profil d'utilisateur pour créer des cookies.

finalement

Merci de rester avec nous jusqu'à la fin. Comment était l'édition supplémentaire? J'ai beaucoup parlé avec Gudaguda, mais j'espère que cet article aidera quelque chose. Cependant, veuillez noter que c'est un programme assez gris. C'est tout pour enp.

[Ajout 8/15] J'ai un peu changé le programme. Le changement est dans options.add_argument ('--incognito'). Ce paramètre ouvrira Chrome en mode secret. J'ai lu des articles tels que "Le système est moins susceptible de mal fonctionner" pour savoir pourquoi il s'ouvre en mode secret, mais je ne le suis pas. Je ne voulais tout simplement pas garder une histoire. Personnellement, je déteste vraiment la situation où «mes informations sont divulguées à mon insu». Donc je ne veux généralement pas garder beaucoup d'histoire. Je ne veux pas voir mon histoire sans le savoir. Vous pouvez voir l'historique séparément. Mais n'est-ce pas différent? Ce qui peut être vu sans autorisation. Par conséquent, j'essaie de ne pas laisser d'historique afin d'éliminer le risque d'être vu sans permission. J'ai parlé d'une chose un peu étrange, mais ce n'est pas grave si vous pouvez comprendre seulement que "j'ai un peu changé le programme"!