Je veux assister automatiquement à des cours en ligne avec Python + Selenium!

Je veux assister automatiquement aux cours en ligne

Je pense que de nombreux étudiants suivent actuellement des cours en ligne.

Je me suis demandé si je pouvais écrire un code de présence automatique si la confirmation de présence était un cours en ligne qui "assistait uniquement à une réunion Zoom".

Pour rappel, c'est une ** histoire **. Bien sûr, ** Prenons la classe correctement! ** Lol

Eh bien, le sujet principal.

Ce que je veux faire, c'est "** rejoindre la réunion Zoom avant l'heure du cours " et " quitter la réunion juste avant la fin de l'heure du cours **".

Quant à l'heure, cela semble tout à fait le cas si vous utilisez le sommeil. La question est ** comment entrer dans la réunion **.

Zoom peut rejoindre la réunion à partir du navigateur, je pense donc que la participation est très probable si vous pouvez utiliser le navigateur.

Préparation préalable

Python + sélénium est utilisé pour le fonctionnement du navigateur. C'est la première fois que j'utilise le sélénium, mais je l'ai appris facilement avec la vidéo de tutoriel de Web scraping en Python sur Youtube.

À propos, Mac et Anaconada sont déjà installés, Python 3.7.4. J'ai utilisé JupyterLab, mais je n'ai pas à le faire.

Maintenant que vous savez comment l'utiliser, vous pouvez héberger Zoom, démarrer une réunion de test et obtenir l'URL.

Pour l'instant, installez sélénium et ouvrez l'URL.

test.py


#S'il n'est pas installé, installez-le
!pip install selenium

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.implicitly_wait(3)

browser.get("URL de la réunion de test de zoom")
time.sleep(5)

Je l'ai ouvert en toute sécurité.

Le texte suivant sera affiché avec l'ID de la réunion, etc. 「If you have Zoom Client installed, launch meeting. Otherwise, download and run Zoom.If you cannot download or run the application, join from your browser.」

Si vous essayez de rejoindre Zoom avec un navigateur, il sera bloqué par reCAPTCHA (contre-mesure du bot), essayez donc de démarrer le Zoom installé.

Pour Chrome, cliquez avec le bouton droit de la souris sur "Vérifier" et obtenez l'Xpath complet de "Lancer la réunion". Après cela, spécifiez l'élément avec xpath et cliquez sur.

test.py


PATH='/html/body/div[2]/div/div/div/div/div[2]/h3[1]/a[1]'
launchButton = browser.find_element_by_xpath(PATH)
time.sleep(3)
launchButton.click()

Une fois exécuté, "Voulez-vous ouvrir zoom.us? Annuler. Ouvrir le zoom" Une fenêtre contextuelle a été affichée.

Cela ressemble à une fenêtre de confirmation (Confirmer), donc cela semble tout à fait le cas avec switch_to.alert.

JavaScript alerts, prompts and confirmations

test.py


alert = browser.switch_to.alerttext = alert.text
alert.dismiss()

Quand tu cours Message: no such alert Nunu? ??

Pop intensifie

Après avoir vérifié et étudié diverses choses, Selenium ne peut faire fonctionner que la fenêtre contextuelle JavaScripts, et ce qui s'affiche est le modèle de la boîte de dialogue système.

Ensuite, j'ai trouvé la description La boîte de dialogue système ne peut pas être utilisée avec Selenium.

Ensuite, vous pouvez le définir de sorte que la boîte de dialogue système ne s'affiche pas. Donc, reportez-vous à Comment masquer l'écran de confirmation lors du démarrage d'une application externe dans Chrome et omettez la boîte de dialogue lors du démarrage d'une application externe. Mis à.

defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true

Utilisez le navigateur vous-même, réglez-le de sorte que la boîte de dialogue ne s'affiche pas la prochaine fois et exécutez-le à nouveau avec Selenium.

Échec. On me demande "Voulez-vous l'omettre de la prochaine fois?" .. Je me demande si c'est la première fois que je visite la page Zoom dans une fenêtre ouverte avec Selenium.

Conclusion

J'ai essayé d'utiliser Safari au lieu de Chrome, mais il a été bloqué par une boîte de dialogue système similaire. Je ne pouvais pas le faire comme je m'y attendais, mais c'était une bonne étude car j'ai utilisé du sélénium pour la première fois. Pour le moment, une chose que je peux dire est "** Allons bien au cours !! **" c'est tout. (Au fait, il est passé 4 heures du matin. Cours ...)

Postscript

J'ai joué avec les paramètres de Chrome pour masquer l'écran de confirmation lors du démarrage d'une application externe. Cependant, je suis un peu inquiet pour la sécurité, donc je vais y remédier.

defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool false

Quand j'ai exécuté, il est resté caché. Après avoir exécuté, j'ai quitté Chrome, je l'ai rouvert, j'ai supprimé les cookies, puis je suis revenu. Repos assuré.

Recommended Posts

Je veux assister automatiquement à des cours en ligne avec Python + Selenium!
Je veux déboguer avec Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Je veux faire un jeu avec Python
Je souhaite utiliser le répertoire temporaire avec Python2
#Unresolved Je veux compiler gobject-introspection avec Python3
Je veux résoudre APG4b avec Python (chapitre 2)
Je veux écrire dans un fichier avec Python
J'ai créé un outil pour parcourir automatiquement plusieurs sites avec Selenium (Python)
J'étais accro au grattage avec Selenium (+ Python) en 2020
Je veux hériter de l'arrière avec la classe de données python
Je veux travailler avec un robot en python.
Je veux AWS Lambda avec Python sur Mac!
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux pouvoir analyser des données avec Python (partie 3)
Je souhaite spécifier une autre version de Python avec pyvenv
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux pouvoir analyser des données avec Python (partie 2)
[Python] Je souhaite utiliser l'option -h avec argparse
Je veux faire ○○ avec les Pandas
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Je veux connaître la météo avec LINE bot avec Heroku + Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Un mémorandum lors de l'acquisition automatique avec du sélénium
Je veux sortir le début du mois prochain avec Python
Je souhaite rechercher le texte intégral avec elasticsearch + python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Comment installer automatiquement le pilote Chrome pour la version Chrome avec Python + Selenium + Chrome
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé de me connecter automatiquement à Twitter avec du sélénium (RPA, scraping)
Je veux détecter des objets avec OpenCV
Je veux écrire un blog avec Jupyter Notebook
Je veux utiliser jar de python
Je voulais résoudre ABC160 avec Python
Je veux créer un environnement Python
Je veux installer Python avec PythonAnywhere
[Python] Utiliser automatiquement le navigateur avec Selenium
Je voulais résoudre ABC172 avec Python
Je voulais vraiment copier avec du sélénium
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
Je veux tweeter Twitter avec Python, mais j'y suis accro
Maintenance de l'environnement réalisée avec Docker (je souhaite post-traiter GrADS en Python
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
Je veux faire le test de Dunnett en Python
Je voulais résoudre NOMURA Contest 2020 avec Python
Je veux mémoriser, y compris les arguments de mots clés de Python
Je veux créer une fenêtre avec Python
[Python] Je veux gérer 7DaysToDie depuis Discord! 1/3
Je veux moquer datetime.datetime.now () même avec pytest!
Je veux frapper 100 sciences des données avec Colaboratory
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
Je veux être OREMO avec setParam!
J'ai essayé d'obtenir des données CloudWatch avec Python