インラインフレーム(より一般的にはiframeとして知られています)は、サードパーティのコンテンツを表示したり、Webページのコンテンツ内に新しいページを埋め込んだりするために使用されます。テスト自動化の世界では、iframeの操作が難しい場合があります。
Seleniumでは、エンジニアがこのswitch_to方法を使用してドライバーのフォーカスをフレーム自体に変更する必要があります。アクションの実行が完了したら、を使用してドライバーをメインページに再度フォーカスする必要がありますswitch_to.default_content()。これは難しいワークフローではありませんが、アクションを実行する必要があるときはいつでもフレームを切り替え続けるのは確かに面倒です。
サイプレスはiframeをネイティブに処理しません。これはcy、すべてのサイプレスコマンドで使用されるプレフィックスが、が見つかるまでDOMをトラバースするため#documentです。見つかったら、トラバーサルは終了します。Cypressをiframeで使用するには、カスタムコード(またはcypress-iframeプラグイン)が必要です。
一方、劇作家は、iframeの操作をシンプルかつ直感的にします。このチュートリアルでは、従来のiframeとネストされたiframeの両方でPlaywrightを使用する方法を学習します。テストの焦点として、DemoQAフレームとネストされたフレームのページを使用します。
このチュートリアルでは、次のパッケージをインストールする必要があります。
Playwrightは、エンジニアにiframeを選択するための3つのオプションを提供します。
このpage.frames[i]プロパティは、iframeに一意の属性や親要素がない場合に使用する必要があります。プロパティは、特定のフレームのインデックスを作成できるページ上のすべてのアクティブなフレームを一覧表示します。アプリケーションのソースコードにアクセスできず、前の2つの方法を使用できない場合を除いて、この方法の使用はお勧めしません。
DemoQAフレームページには2つのiframeが含まれています。1つはページの左中央に、もう1つは左下にあります。
DemoQAフレームページのiframeには一意のurl属性がなく、属性もありませんname。element_handle.content_frame()親要素に一意のセレクターがあるため、これらの場所を特定する方法を使用します。
これで、ページの最初のフレームにアクセスできます。劇作家のアサーションはElementHandlesで使用できるframe_oneとheadingPytestアサーションを書き込むために。
Playwrightは、frame.child_frame[i]プロパティを使用して既存のiframe内のフレームを選択するための追加の方法を提供します。このプロパティは、ページ上のiframe内のすべての子フレームのリストを返します。page.frames[i]プロパティと同様に、これは、子iframeに一意の属性nameまたはurl属性がない場合、または一意のロケーター戦略を持つ親要素がある場合に役立ちます。
DemoQAのネストされたフレームページの子iframeには、一意のロケーター戦略がないため、frame.child_frame[i]プロパティを使用して選択する必要があります。
子iframeには、「子Iframe」というテキストを持つbody要素と単一のp要素が含まれます。これを使用して、Pytestアサーションステートメントを作成するためのPlaywrightアサーションを作成できます。
上記のテストは、次のコマンドを使用してターミナルで実行できます(を使用している場合pytest-playwright)。
pytest ヘッドレスランの場合pytest --headful 頭一杯のためにbrowser = {browser_type}.launch(headless=False)
このチュートリアルを完了すると、ディレクトリは次のようになります。
tests
|__ test_frames.py
.gitignore
README.md
requirements.txt
Playwrightを使用すると、エンジニアはiframeを見つけてアクションを実行するための、きちんとした読みやすいテストコードを作成できます。オートメーションスペース内のPlaywrightの競合他社とは異なり、エンジニアは、インラインフレーム要素を操作するときに、カスタムコードを記述したり、ドライバーのフォーカスを追跡したりする必要はありません。
Jonathan Thompsonは、テスト自動化を専門とする上級品質エンジニアです。彼は現在、ノースカロライナ州ローリーに妻とウィンストンという名前のゴールデンドゥードルと一緒に住んでいます。LinkedInで彼とつながるか、Twitter(@jacks_elsewhere) またはGithub(ThompsonJonM)で彼をフォローすることができます。
ブラウザ、コード インタープリターなどの新しい強力な ChatGPT プラグインについては聞いたことがあるはずです。しかし、問題があります。プラグインへのアクセスは待機リストに制限されているため、多くの人がアクセスできません。
今週、毎日のメールリストのメンバーからメールを受け取りました。彼らは次のことを知りたかったのです。毎日、毎週、毎月どのリソースにアクセスしていますか? 素晴らしい質問です!私のワークフローと使用している主なリソースについての洞察を共有したいと思います。
はじめに:勇敢な読者の皆さん、地球の最も暗い深みへ私たちを導く旅へようこそ。このブログでは、マリアナ海溝の謎に満ちた世界を掘り下げ、その隠された秘密を明らかにし、その表面の下にある骨も凍るような真実を明らかにします。
facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。
私たちは、自分にとって良いとわかっていることを実行するのに苦労していることによく気づきます。大切な人に愛していると伝えることから、海賊のように話すことを忘れないことまで、すでにそうしたことを行っているため、1日、1週間、または1か月のイベントは必要ないと主張する人が常にいます。
先週、私はPressGazette(英国のメディアニュースウェブサイト)経由で送信されたプレスリリースに気づきました。この記事は、スカンジナビアのポッドキャスト ホスティングおよび広告会社である Acast が、ポッドキャスティングにおいて「おそらく最も影響力のある」パブリッシャーのコンソーシアムを率いることになると発表しました。