0

Seleniumとwin32com.clientを使用してサイトの認証ポップアップを処理するためのキーを送信できます。コードを手動で実行するとうまくいきます(Jupyter Notebookを実行中)。Selenium Webdriver Pythonを使用した認証ポップアップ

.ipynbを.pyに変換し、Windowsタスクスケジューラを使用して自動的に実行するようにスケジュールすると、エラーが発生します。認証ポップアップウィンドウが表示されます。

私は下のオプションを試してみました:これは

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

2.ノートブックに正常に動作します)

1)だけ

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}") 

ノートにいくつかの選択肢とその作業をされていますしようタスクスケジューラを使用してこのコード(.py)を自動的に実行する方法に関するより良いアプローチがありますか?

+0

アップデートまでの私の一時的な解決策です:アクティブなデスクトップセッションがある場合にのみコードがの.pyで動作します。スケジュールされた実行前にコンピュータが非アクティブを検出すると、タスクはプッシュスルーされません。私はシステムのロックを解除し、プロセスの後にロックする方法がありますか?ところで、コンソールウィンドウとSetFocusをChromeに最小化するためにpywinautoを追加しました。ありがとうございました! –

答えて

0

.ipynbとPYとうまく動作アクティブデスクトップセッション アップデートでいる間: 追加コードコンソールウィンドウクラスを最小限に抑えるために

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}") 

コンピュータがロックされているとき、それは動作しません。回避策は、マウスイベントのpyautoguiを送信することです。

ここでも、それは最善の解決策ではないかもしれませんが、これはあなたの最善のアプローチ:)

関連する問題