前提・実現したいこと
・前提
プログラミング初心者
pythonでseleniumとchromedriverを使用して自動ログインするプログラムを組んでいます。
・実現したいこと
chromedriverが開いていない状態であればログイン処理、開いている状態(chromedriverのウインドウが開いている)であればログイン後のページに直接飛ぶという処理をしたいです。
・補足
実現したいことの大元は、プログラムを動かす際に毎回二段階認証を行うのをやめたいということです。
そのためにユーザープロファイルを使ってログイン状態を維持しようと考えています。
###教えていただきたいこと
・chromedriverのウインドウが開いているかを判断する方法
実現したいことを叶える、もっと効率的な方法などがありましたらそれも教えていただけると幸いです。
想定イメージ
python
1if ドライバーが開いている=false: 2 ログイン処理 3 4elif ドライバーが開いている=true: 5 driver.get(url) 6 7それ以降の処理
補足情報(FW/ツールのバージョンなど)
Python 3.8.3 64-bit(conda)
windows10
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
Python
1import time 2from selenium import webdriver 3import chromedriver_binary 4from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 5 6def main(): 7 user_profile = 'UserProfile' 8 options = webdriver.ChromeOptions() 9 options.add_argument('--user-data-dir=' + user_profile) 10 11 driver = webdriver.Chrome(options=options) 12 url = "https://teratail.local/wp-admin/edit.php" 13 driver.get(url) 14 15 time.sleep(5) 16 17 if "ログイン" in driver.title: 18 login(driver) 19 20 time.sleep(5) 21 driver.close() 22 23def login(driver): 24 username = "admin" 25 password = "password" 26 driver.find_element_by_css_selector("#user_login").send_keys(username) 27 driver.find_element_by_xpath("//*[@id='user_pass']").send_keys(password) 28 driver.find_element_by_css_selector("#rememberme").click() 29 driver.find_element_by_css_selector("#wp-submit").click() 30 31if __name__ == "__main__": 32 main()
ローカル環境(WordPress)で試しています。
1回目はログイン情報が保存されていないので管理ページを開こうとすると
ログインページに転送されます。
転送されたことを確認(ページタイトルがログイン)して、
ユーザー名、パスワードを入力して submit
します。
2回目は UserProfile
に認証情報が保存されているので、
ログインページに転送されることなく管理ページが開きます。
目的とは外れているかもしれませんが、今ひとつ問題点が把握できないので参考までにお知らせします。
投稿2020/11/14 09:30

退会済みユーザー
総合スコア0
0
私もそれほど詳しいわけではないので外れていたらすみません。
Open multiple tabs in selenium using python
こちらを参考に、
Python
1url = 'https://www.yahoo.com' 2control_string = "window.open('{0}')".format(url) 3driver.execute_script(control_string)
とすれば別のタブでページを開くことができました。
タブの移動は、
How to Switch Tabs in Selenium For Python
Python
1windows = driver.window_handles 2for w in windows: 3 driver.switch_to.window(w)
これで確認しました。次の記事も参考になるかもしれません。
(参考)Seleniumで新規タブを開く
投稿2020/11/13 11:56

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Python+Selenium+ChromeDriverでログオン認証状態を維持する方法
こちらの記事は参考になりますでしょうか。
投稿2020/11/13 02:24

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2020/11/13 07:08

退会済みユーザー
2020/11/13 11:44

0
自己解決
色々調べた結果RMSのシステム上難しそうだったので、一度プログラムを終了させるという方法をやめて、for文で自動操作の処理をすべて終わらせてから手で作業しなければならない工程を行うように変更しました。
投稿2020/12/08 07:44
編集2020/12/08 07:53総合スコア1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。