web-dev-qa-db-ja.com

Python Selenium:既に開いていて、ログイン認証情報でログインしたブラウザを使用します

Seleniumを使用するpythonプログラムのさまざまな実行に対して、自分の資格情報で開いてログインしたブラウザーを保持し、後で実行するときに使用する方法はありますか?

コードをデバッグしています。資格情報を使用してログインする必要があるたびに、ブラウザで。現在、コードを停止するたびに、Webブラウザーが閉じられます。すでに開いてログインしているブラウザのコピーを開いたままにして、後でデバッグに使用するため、ログイン資格情報を再度入力する必要がないたびに方法がありますか?

ブラウザを開くコードは次のようになります。

driver = webdriver.Chrome(executable_path="/the_path/chromedriver", chrome_options=chrome_options) 
driver.get(url)

編集:

実際、このWebサイトが認証を要求する方法は次のとおりです。まず、ユーザー名を要求し、次に続行ボタンを押す必要があり、次にパスワードを要求します。パスワードを入力すると、SMSを携帯電話に送信する場合、目的のページに移動する前に入力する必要があります。

8
TJ1

さて、この質問は支持されていますが、重複した質問としての私のフラグは受け入れられなかったので、ここに投稿します 同様の質問に対してすでに投稿した同じ答え


pickle を使用して、Cookieをテキストファイルとして保存し、後でロードできます。

def save_cookie(driver, path):
    with open(path, 'wb') as filehandler:
        pickle.dump(driver.get_cookies(), filehandler)

def load_cookie(driver, path):
     with open(path, 'rb') as cookiesfile:
         cookies = pickle.load(cookiesfile)
         for cookie in cookies:
             driver.add_cookie(cookie)

次のようなスクリプトを使用します。

from Selenium import webdriver
from afile import save_cookie

driver = webdriver.Chrome()
driver.get('http://website.internets')

foo = input()

save_cookie(driver, '/tmp/cookie')

できることは:

  1. このスクリプトを実行する
  2. (Seleniumの)ブラウザーで、Webサイトにアクセスし、ログインします
  3. 端末に戻り、Enterキーを押して入力します。
  4. /tmp/cookieでCookieファイルをお楽しみください。これをコードリポジトリにコピーし、必要に応じてアプリにパッケージ化できます。

だから、今、あなたのメインアプリコードで:

from afile import load_cookie

driver = webdriver.Chrome()
load_cookie(driver, 'path/to/cookie')

そして、あなたは今ログインしています。

5
Arount

これは機能要求であり、実行不可能であるため閉じられました 。しかし、それはそれを行う方法であり、プロファイルとしてフォルダを使用し、Chrome options user-data-dirフォルダをプロファイルとして使用するには、次を実行します。

chrome_options = Options()
chrome_options.add_argument("user-data-dir=Selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")

このステップで開いたウィンドウと手動で対話し、人間の相互作用をチェックするログインを実行し、パスワードを記憶するなどを確認しますこれを行うと、すべてのフォルダにWebdriverを起動するたびに必要なログイン、Cookieそこ。拡張機能を手動でインストールして、すべてのセッションで拡張機能を使用することもできます。上記とまったく同じコードで2回目に実行すると、すべての設定、Cookie、およびログインがあります。

chrome_options = Options()
chrome_options.add_argument("user-data-dir=Selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see  the cookies, the settings, Extensions and the logins done in the previous session are present here

利点は、異なる設定とCookieを持つ複数のフォルダー、Cookieのロード、アンロード、拡張機能のインストールとアンインストール、設定の変更、コードによるログインの変更が不要なため、プログラムのロジックを中断する方法がないことです。などまた、これはすべてコードで行うよりも高速です。

1