0

Je suis capable d'envoyer des clés pour gérer le popup d'authentification d'un site en utilisant Selenium et win32com.client. Cela fonctionne correctement lorsque je cours le code manuellement (en exécutant un bloc-notes Jupyter).Authentification Popup utilisant Selenium Webdriver Python

L'erreur se produit lorsque je convertis .ipynb en .py et planifie l'exécution automatique à l'aide de Windows Task Scheduler. Il se coince dans la fenêtre contextuelle d'authentification.

J'ai essayé les options ci-dessous:

1.) Cela fonctionne bien dans le cahier

shell = comclt.Dispatch("WScript.Shell") 
driver = webdriver.Chrome(chrome_path) 
driver.maximize_window() 
driver.get(url) 
shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}") 

2.) Juste essayer quelques solutions de rechange et son fonctionnement dans le cahier

shell = comclt.Dispatch("WScript.Shell") 
driver = webdriver.Chrome(chrome_path) 
driver.maximize_window() 
driver.get(url) 

try: 
    alert = driver.switch_to_alert().accept() 
    shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}") 

except NoAlertPresentException: 
    shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}") 

Est y a-t-il une meilleure approche sur la façon d'exécuter ce code (.py) automatiquement à l'aide du planificateur de tâches?

+0

Mises à jour: Le code fonctionne en .py seulement quand il y a une session de bureau actif. Chaque fois que l'ordinateur détecte une inactivité avant l'exécution planifiée, la tâche ne passe pas. Est-il possible de déverrouiller le système et de le verrouiller après le processus? BTW, j'ai ajouté pywinauto pour réduire la console Windows et SetFocus à Chrome. Je vous remercie! –

Répondre

0

fonctionne bien avec .ipynb et py tout en session de bureau actif mises à jour: ajouté codes pour minimiser la classe Window Console

app = Application().Connect(title ='path' + 'python.exe', class_name = 'ConsoleWindowClass') 
cwc = app.ConsoleWindowClass 
cwc.Minimize() 

app = Application().Connect(title ='page', class_name = 'Chrome_WidgetWin_1') 
widget = app.Chrome_WidgetWin_1 
widget.Minimize() 
time.sleep(2) # will allow the some time before executing other task 
widget.Maximize() 
widget.SetFocus() 
time.sleep(3) 
shell.SendKeys("username", + "{TAB}" + "password" + "{TAB}" + "{ENTER}") 

Il ne fonctionne pas lorsque l'ordinateur est verrouillé. Travailler est d'envoyer un pyautogui pour les événements de la souris.

Encore une fois, il pourrait ne pas être la meilleure solution, mais c'est ma solution temporaire jusqu'à ce que votre meilleure approche :)