[selenium] ブラウザ(デバッガ)を再利用します

Selenium デバッグ モード、リモート デバッグ、ブラウザの再利用。

シーン

たとえば、JD.com ショッピング プロセスをテストするには、後続の操作に進む前に、コードをスキャンして正常にログインする必要があります。

ユースケースを作成およびデバッグする場合、実行するたびに新しいブラウザ ウィンドウが開かれるため、コードをスキャンして再度ログインする必要があります。

その理由は、ChromeDriverデフォルトでは、新しいセッションが呼び出されて開始されるたびにロードされるため、このような頻繁なデバッグ シナリオでは時間の無駄です。

このため、ChromeDriverリモート ポートを開くことで機能が提供されますdebug

ChromeOptionsオブジェクトのパラメータを、debuggerAddress次の形式で接続するデバッガ サーバーのアドレスに設定します。

<hostname/ip:port>

つまり、ブラウザの再利用の目的を達成するために、以降の操作は現在のウィンドウで実行されます。

構成

  1. chromedriver環境変数に追加されます
# bin 目录已经配置好环境变量
# 这里可以直接将下载好的 driver 放到该目录下
$ mv chromedriver /usr/local/bin
  1. 設定 - プライバシー設定とセキュリティ - Web サイトの設定 - バックグラウンド同期 - デフォルトの動作 - 最近閉じた Web サイトを確認して、データの送受信操作を完了します。

  2. ブラウザを完全に閉じ、マウスの右ボタンをクリックして終了します。

  3. ブラウザのリモート デバッグ ポートを開きます。ローカルで開いているポートと競合しない限り、このポートはカスタマイズできます。

$ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome -remote-debugging-port=9222
# 正在现有的浏览器会话中打开。
# 如果出现上面提示,重新关闭浏览器,执行命令
  1. スクリプトを実行しoptionsIPリモート ブラウザのアドレスとポート番号を追加して、テストを実行します。
@pytest.fixture(scope="session")
def driver():
    options = Options()
    # 设置复用浏览器的端口,地址
    options.debugger_address = "127.0.0.1:9222"
    driver = webdriver.Chrome(options=options)
    driver.get("https://baidu.com")
    yield driver
    driver.quit()


def test_demo(driver):
    driver.find_element(By.ID, "kw").send_keys("selenium")

このとき、テスト ケースを何度実行しても、同じデバッグ ブラウザが再利用され、新しいブラウザ ウィンドウは開かれません。

おすすめ

転載: blog.csdn.net/lan_yangbi/article/details/127970162