Selenium は引き続き次のようにプレイできます: 実際にログイン ステータスを再利用する

アプリケーションシナリオ

自動テストが効果的でない場合は、使用しないほうがよいでしょう。しかし、Web自動化テストの過程では、テストスクリプトの動作の安定性を確保するために効率を犠牲にすることが多いため、業界関係者からは「Web自動化はやらないほうが良い」という批判もよく受けます。

この記事では、seleniumで起動したブラウザの状態を永続化する簡単な方法を紹介しますが、他のテストスクリプトでもブラウザの状態を共有できるため、テストの効率がある程度向上し、他の場面でも活用できます。

永続ストレージを使用するため、ブラウザーの状態を生成するコードとブラウザーの状態を取得するコードを分離し、独立して維持できます。

たとえば、ほとんどの Web サイト操作にはログイン状態が必要です。まずログイン コードを独立して記述し、次にログインしたブラウザの状態を保存します。その後、Web サイトを操作するたびに、ブラウザ セッションを直接取り出して直接操作できるため、毎回ログインする必要がなくなります。時間のプロセス。

コードのロジックは非常に単純で、主にいくつかのステップに分かれています。

  • ログイン
  • ストア状態
  • ステータスを取得する
  • 再利用

ログイン

ログイン コードは、セレンに精通したほぼすべての友人が目を閉じて書くことができます。ログインアクションが完了した後の最後の 3 行で、Selenium セッションのリモート サービス アドレスとセッション ID が取得されることに注意してください。

今後、テスト スクリプトは、今回はリモート サービス アドレスへの接続に依存し、セッション ID を通じてブラウザ オブジェクトを取得します。driver.quit() を使用して終了しないでください。そうしないと再利用できません。

永続ストレージ

サービスアドレスremote_executorとセッションIDを取得したら、これら2つのデータを永続的な方法で保存する必要があります。

データベース、json ファイル、yaml ファイル、または他の一般的な形式のテキストを使用できますが、耐久性が必要です。

ここではyamlファイルを使用して保存します。

これで、login 関数を使用してログインし、ログイン後に save_session 関数を使用してブラウザの状態を保存できるようになります。コードが正常に実行されると、プロジェクト内に session.yaml ファイルが表示されるはずです。

remote_executor, session_id = login()
save_session(remote_executor, session_id)
复制代码

永続的なセッションを取得する

次に、考慮する必要があります。他のテスト スクリプトがこの Selenium セッション オブジェクトを使用したい場合は、まず yaml ファイルからセッション ID とリモート サービス アドレスを読み取り、次に Selenium ブラウザ オブジェクトを再初期化し、アドレスに接続し、セッション ID を読み取り ID に変更します。

この部分はすでにこの記事で触れているので、興味のある方はもう一度読んでみてください。

セッションを再利用する

特定の使用プロセスでは、最初に read_service を通じてサービス アドレスとセッション ID を読み取り、次に、reuse_session 関数を通じて以前のセッションに再接続します。

session_config = read_service()
session_id = session_config['session_id']
executor = session_config['remote_executor']
driver = reuse_session(session_id, executor)
复制代码

セッションが終了していない限り、上記のコードはいつでも接続してブラウザを取得できます。以下の動作は通常の Selenium と変わりません。

# script1
driver.get('https://petstore.octoperf.com/actions/Catalog.action')
# 不需要登录了
driver.find_element('link text', 'My Account').click()


# script2
driver.get('https://petstore.octoperf.com/actions/Catalog.action')
  # 不需要登录了
driver.find_element('xpath', "//area[@alt='Fish']").click()
复制代码

同時プログラミングに対処する方法

この方法の拡張性は依然として非常に強力であり、生産消費モデルを適用できます。まずログイン ステータスで複数のセッションを初期化し、次にタスクを同時に実行すると、一度に 1 つのセッション オブジェクトの消費をキューから受け取ることができます。ここのコードは後で時間があるときに補足するので、先に穴を掘っておきましょう。

コードを取得

完全なコードを取得してコメント欄に返信してください【セレン再接続実戦】

終わり

私のブログがお役に立ちましたら、ブログ内容を気に入っていただけましたら、ワンクリックで「いいね!」「コメント」「お気に入り」をお願いします!

最後に、基礎知識、Linux の要点、シェル、インターネット プログラムの原則、Mysql データベース、パケット キャプチャ ツールのトピック、インターフェイス テスト ツール、高度なテスト - Python プログラミング、Web 自動テスト、APP 自動テスト、インターフェイス自動テスト、高度な継続的統合のテスト、サポートテスト フレームワーク開発、テスト フレームワーク、パフォーマンス テスト、セキュリティ テストなどの学習リソース [無料]。

おすすめ

転載: blog.csdn.net/jiangjunsss/article/details/123239793#comments_27424842