問題タブ [pageobjects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
13885 参照

ruby - ページ オブジェクト モデル: ページ メソッドにアサーションを含めないのはなぜですか?

初めてのポスター。私は長年 UI の自動化に取り組んできましたが、ページ オブジェクト モデルを紹介されたり、ページ オブジェクト モデルを使用するように指示されたりしたのはつい最近のことです。そのほとんどは常識であり、私がすでに使用している手法を含んでいますが、十分に合理的な説明を広範囲に検索したにもかかわらず、自分の心の中で正当化できなかった特定の細かい点があります. POM を自分のベスト プラクティスと統合しようとしているときに、この質問が驚きを引き起こしたので、ここの誰かが私を啓発してくれることを願っています。

http://code.google.com/p/selenium/wiki/PageObjectsから:

上記のコードは重要なポイントを示しています。ページの状態に関するアサーションは、PageObjects ではなく、テストが行​​う必要があります。もちろん、すべてのガイドラインと同様に、例外もあります。

http://seleniumhq.org/docs/06_test_design_considerations.html#chapter06-referenceから:

ページ オブジェクトの設計方法には多くの柔軟性がありますが、テスト コードの望ましい保守性を実現するための基本的なルールがいくつかあります。ページ オブジェクト自体は、検証やアサーションを行うべきではありません。これはテストの一部であり、ページ オブジェクトではなく、常にテストのコード内にある必要があります。ページ オブジェクトには、ページの表現と、メソッドを介してページが提供するサービスが含まれますが、テスト対象に関連するコードはページ オブジェクト内にあるべきではありません。

ページオブジェクト内に含めることができ、またそうすべきである単一の検証があり、それは、ページ、およびおそらくページ上の重要な要素が正しく読み込まれたことを検証することです。この検証は、ページ オブジェクトのインスタンス化中に行う必要があります。

これらの「ガイドライン」はどちらも潜在的な例外を認めていますが、基本的な前提には同意できませんでした。私は「ページメソッド」内でかなりの量の検証を行うことに慣れており、検証の存在は、さまざまなコンテキストで問題を見つけるための強力な手法だと思います (つまり、メソッドが呼び出されるたびに検証が行われます)。特定のテストの限られたコンテキストでのみ発生するよりも。

たとえば、AUT にログインしたときに、「ユーザーとしてログインしました」というテキストが表示されたとします。単一のテストでこれを明確に検証することは適切ですが、毎回検証したくないのはなぜですかログインが呼び出されますか?このアーティファクトは、ページが「正しくロードされた」かどうかに直接関連するものではなく、一般的に「テストされているもの」には関連していないため、上記の POM ガイドラインによれば、明らかにページ メソッドに含めるべきではありません。 ..しかし、可能な限り前もって考えずに、重要なアーティファクトを可能な限り頻繁に検証することにより、自動化の力を最大化するために、明らかにそこにある必要があるように思えます。検証コードをページメソッドに入れると、テストで心配することなく「無料で」多くの検証を取得できるため、自動化の力が倍増します。さまざまなコンテキストでのこのような頻繁な検証により、見つけられない問題が見つかることがよくあります。たとえば、検証がそのアーティファクトの単一のテストに限定されている場合。

言い換えれば、私はテスト固有の検証と「一般的な」検証を区別する傾向があり、後者が広範囲にページメソッドに含まれることは完全に適切/望ましいと思います。これにより、より薄いテストとより厚いページ オブジェクトが促進され、一般に、これらのガイドラインでは反対の競合が存在するにもかかわらず、より多くのコードを再利用することでテストの保守性が向上します。私は要点を逃していますか?ページメソッドで検証を望まない本当の理由は何ですか? 私が説明した状況は実際にこれらのガイドラインで説明されている「例外」の 1 つであり、したがって実際には POM と矛盾していませんか? ご意見ありがとうございます。-jn-

0 投票する
2 に答える
1758 参照

java - Selenium、Java、PageObjectパターン、壊れた階層

ページオブジェクトパターンを使用して、Webアプリの相互作用をモデル化しています。アプリのほとんどのページには、「ログイン」、「ログアウト」、「ホーム」などの標準オプションがあります。さらに、すべてのページに保護されたWebDriver参照があります。

そこで、すべてのページが継承するスーパースーパークラス( GrandpaClass )を作成しました。これには、保護されたWebDriver参照と、ドライバーを初期化するためのコンストラクターのみが含まれます。

次に、ほとんどのページが継承するスーパークラス( PapaClass)を作成しました。これはGrandpaClassを継承し、上記の標準メニュー機能(ログインなど)を追加します。

この問題は、同じメニューアクションで異なるページが表示される可能性がある場合に発生します。たとえば、ログアウトすると、ログインページに移動するか、エラーページに戻ることができます。ただし、ログイン機能はPapaClassにあるため、このクラスは、彼から継承する別のページを返す必要があります。これにより、スーパークラスはそのサブクラスに依存します。

ストラテジーのようなものを使用して、一般的なメニュー機能を除外することを考えていました。したがって、PapaClassは、機能を維持する代わりに、Menuオブジェクトへの参照のみを維持します。

これは良い考えですか、それともこれを解決するためのよりエレガントな(またはより簡単な)方法がありますか?

ありがとう。

0 投票する
1 に答える
2364 参照

c# - Javascript を使用した Selenium FindBy 属性と C# での待機

私は Selenium を使用しており、javascript を実行するための次の拡張メソッドがあります。

私の HomePage クラスには、次の属性があります。

ただし、employerSelectはJavascriptによって生成されるため、次のような方法はありますか:

本質的に、次のような FindsBy 属性の一部として生の ExecuteJs 呼び出しを置き換えたいと考えています。

次のような FindsBy 属性の一部に

そのようなことをするために何を拡張できますか?

0 投票する
2 に答える
1605 参照

c# - Selenium 2 WebDriver が更新された DOM を期待どおりに評価しない

入力ページを自動化するために C# で Selenium 2 WebDriver を使用しています。DOM が読み込まれると非表示になる検証概要コントロールがあります。追加の負荷がかかると次のようになります。

Selenium で pageObject を初期化すると、WebElement の Displayed プロパティが「false」に設定されます。これは私が期待することです。

送信ボタンをクリックすると、dom は次のように変更されます。

次の方法で WebElement にアクセスしようとすると、検証のクリックが発行された後、Displayed プロパティはまだ「false」であり、追加された div は表示されません。

これは実際に機能するはずですか?Selenium が DOM を現在の状態で評価するのに十分な知識を持っていることを期待する必要がありますか? 要素の Displayed プロパティを実際にどのように評価しますか? PageSource プロパティを見ると、テキストが存在することがわかります。変更が Selenium に反映されない理由がわかりません。

0 投票する
1 に答える
640 参照

java - ページオブジェクトパターンで新しいページオブジェクトを返すことの利点は何ですか?

たとえば、Google検索をテストする場合、新しいGoogle検索ページオブジェクトを返すページオブジェクトモデルの利点は何ですか?

例えば

vs

助けてくれてありがとう!

0 投票する
1 に答える
3437 参照

webdriver - Java で PageFactory を使用した Webdriver PageObject 実装

ここに私がこれまでに持っているものがあります:

アプリケーションにログインしてホームページに移動する、動作中の Webdriver ベースの Java クラス:

1. ユーザー名とパスワードを入力する必要があるログイン ページと、認証が成功すると表示されるホームページです。

今、私はこれを Pagefactory を使用して PageObjects として実装したいので、私は持っています:

そして、ログインページについては、これらのページを呼び出すテストと同様に、それをどのように実装するかわかりません。

0 投票する
2 に答える
104 参照

ruby - メソッドが実行される前に、オブジェクトはそれ自体を再初期化できますか?

メソッドが実行される前に、オブジェクト自体を再初期化することはできますか? Ruby と Selenium を使用して Web アプリをテストしており、ページ オブジェクトを改善しようとしています。例えば

これは良い考えですか、それとも悪い考えですか? または、これを行うより良い方法はありますか?

0 投票する
1 に答える
4166 参照

ruby - id、title、linkなどでsite-prismを介して、またはcssセレクターのみで要素を見つけることができますか?

統合テストにsite-prismgemを使用することで、id、title、link、xpathを参照してページ要素を見つけることができますか、それともcssからのみ検索できますか?

0 投票する
1 に答える
7599 参照

java - Webdriverエラー「ドライバー情報:driver.version:不明」

Page-ObjectsExampleから例を実行しようとしています

Windows 7では正常に動作しますが、Linux(Fedora 15)で実行しようとすると、エラーが発生します。

System.setPropertyを次のように設定してみました:

しかし、同じエラーが発生しました。