web-dev-qa-db-ja.com

Firefoxプロファイルのセレン使用

Windows 10システムでSelenium WebdriverとPython=を使用してブラウザーアクションをいくつか自動化しようとしています。しかし、この問題があります。Seleniumで起動されたFirefoxウィンドウが、自分がすでに存在していることを「認識」しません。ログインしてターゲットサイトがログインページに移動するので、Seleniumは実際にはプロファイルを使用せず、そのコピーのみを使用すると想定しました。

私が知りたいのですが:

  1. プロファイルのコピーの実際の使用に関する私の結論は正しいですか?
  2. 1.がtrueの場合、既存のプロファイルのすべてを実際に使用する方法はありますか?
  3. 私の結論が真実ではない場合は、それを証明し、セッションに使用できる情報、Seleniumが送信に失敗する理由、実際に強制する方法を見つけることができる方向を教えてください。

編集:

from Selenium import webdriver
fp = webdriver.FirefoxProfile('C:/Users/<user name>/AppData/Roaming/Mozilla/Firefox/Profiles/abc3defghij2.ProfileName')
driver = webdriver.Firefox(fp)
driver.get("https://www.example.com/membersarea")
10
svgrafov

Seleniumは確かにプロファイルのコピーを使用しますが、問題が発生することはないはずです。あなたの問題は、セッションCookieと永続的なCookieのどちらにも関係があると思います。

On support.mozilla.org は、プロファイルに実際に保存されている情報を示すリストです。 Cookieはこれらの中にありますが、 session-cookies はcookies.sqliteに保存されないことに注意してください。これは、Seleniumがプロファイルに表示されないためにセッションを再構築できない理由です。

ただし、多くのサイトでは、ログインページにremember-meまたはstay-logged-inオプションを提供しています。これらのオプションを使用すると、セッションを復元できる永続的なCookieが保存されます。次のスクリプトを使用して、Gmailでこれをテストしました。

from Selenium import webdriver

url = "https://mail.google.com"
fp = webdriver.FirefoxProfile('/Users/<username>/Library/Application Support/Firefox/Profiles/71v1uczn.default')

driver = webdriver.Firefox(fp)
driver.get(url)

stay-logged-inオプションを有効にしてGmailにログインした後でこのスクリプトを実行すると、Seleniumが受信トレイにアクセスできます。 stay-logged-inオプションが有効になっていない場合、ブラウザを閉じるとセッションが破棄されるため、Seleniumはセッションを復元できません。

以下のスクリーンショットは、セッションCookieが実際にcookies.sqliteに保存されていないため、Seleniumで使用してもプロファイルに表示されないことを示しています。

Firefox cookies in cookies.sqlite and firebug

13
sowa