問題タブ [page-object-gem]
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.
ruby - page-object を使用してフィールドセットを検索する
チェックボックスのセットを見つけようとしていますが、それらをフィールドセットに配置する必要があります。html は次のようになります (これは gwt アプリなので、大量のものが生成されます。
私は Watir と page-object gem を使用しています。フィールドセットを見つけようとしていますが、フィールドセット要素がありません。長期的には、各チェックボックスを見つけて、チェックされているかどうかの値を取得し、その名前とともにハッシュに保存する必要があります。
page-object に fieldset メソッドがあったとしても、連続する各チェックボックスを見つけて値とラベルを取得する方法がわかりません。
ruby - 要素のメソッドを呼び出すときに非推奨の警告を取得する - アドバイスを利用できます
ページ オブジェクト要素でメソッドを呼び出すと、非推奨の警告が頻繁に表示されます。これは、gem をまだ意図したとおりに使用していない可能性があることを示しています。このようなことを処理するためのより良い方法を誰かが推奨できますか?
それぞれがチェックボックス要素を保持する div のリストを含むページで作業しています。つまり、次のようなものです。
インデックスでチェックボックスにアクセスし、必要に応じてチェックしたいと思います。これが私が現在持っているものです:
これは機能しますが、5 行目、checkbox.set で非推奨の警告が表示されます。それをcheckbox.clickに変更すると、クリアされます。それにもかかわらず、私はこれを「page-object gem」の方法で行っているとは確信していません。watir-webdriver を使用すると、divs によって操作する配列が提供され、同様の方法で同じことを達成できます。誰かが宝石を使ってこのようなことをしましたか?
page-object-gem - 古い要素参照エラー
page-object gem と Watir Webdriver を使用すると、ページで Selenium::WebDriver::Error::StaleElementReferenceError に出くわすことがあります。このエラーは、いくつかの基本的なものをロードし、ajax リクエストを作成し、より多くの情報を再入力します (速度の錯覚のため)。ページで)。
これは、そこに HTML 要素が存在するために発生し、すぐに消えて、ユーザーが実際に気付く前に再び表示されます。
ページオブジェクトの「.when_present」メソッドを使用して、オブジェクトが最初にページに表示されるまで待機してからアクセスします。ただし、コードが要素を見つけた後でも、通常、古い要素エラーが発生します。これは、元の HTML 要素がなくなり、アクセスしようとするまでに別の要素が再び表示されるためです。
これを回避するために、(ページオブジェクトではなく) ストレートな Watir を使用する方法を見つけました。基本的に、Watir::Wait.until ブロック内で StaleElementReferenceError をキャッチします。例外が発生した場合、ブロックは false を返し、Wait.until は true になるかタイムアウトになるまで再試行します。私たちが発見したことは、これは通常、最初に Stale Element を取得し (以下の 3 行目)、レスキューから false を返し、Wait.until がブロックを再度実行し、2 回目は true であり、テストに移行して合格することです。 .
この種のページオブジェクトラッパーがあるかどうかは本当に疑問です。何も見つかりませんでした。そうでない場合は、上記が機能するため問題ありません。ちょっと興味があるんだけど。
ありがとう
ruby - Cucumber Pageobject - 未定義のメソッド リンク
クラスの初期化で PageObjectリンクメソッドを使用したいのですが、うまくいきません :(
ここで私がやろうとしていること:
MyPage オブジェクトのインスタンスの作成時に Cucumber を実行すると、次のエラーが発生します。
この問題を回避するために現在行っていることは次のとおりです。
これは正常に機能していますが、モジュールにリンク名をハードコーディングしたくありません。
また、最初のケースで初期化の時点でメソッドが利用できない理由を理解できません。
ruby - ページ オブジェクトのすべての要素を反復処理する
検索フィルターがあります。ページ上のすべてのフィールドがそこにあり、値が含まれていることを確認できる必要があります (選択ボックスの場合)。
MethodFinder ジェムを使用してこれを成功させましたが、PageObject ジェムだけで方法があるかどうか疑問に思っていました。
上記を正常に使用しましたが、やりたいページオブジェクトメソッドを使用できなくなりました。要素の PageObject バージョンにすぎない有効な「要素」のリストを何らかの方法で処理できるようにしたいと考えています。
編集:それで、非常に怪しいことが起こっていることがわかりました。上記のクラスからフィールドを取得する RSpec テストがあります。次のようになります。
ドキュメントによると、 your_element_element コマンドは watir 要素を返す必要があります。これは一度起こっています。2 番目の puts は、何らかの方法で PageObject オブジェクトに戻すことです。私は今、何が起こっているのかまったくわかりません。上記の出力の一部を次に示します。
ruby - モジュールからJSウィジェットにアクセスする
モジュールからカスタム JS ウィジェットにアクセスしようとしています。基本ページ クラスには、PageObject、DataMagic、および RSpec::Matchers のみが含まれます。
私のクラス
モジュール
JQuery UI 日付ピッカー ウィジェット
そして手順:
このテストを実行すると、次のエラーが表示されます。
では、モジュールからそのウィジェットにアクセスするにはどうすればよいですか?
UPD: ブラウザはここから開始しますhooks.rb
。
ruby - フックを回避しようとすると未定義のメソッド エラーが発生する
アカウントの種類ごとに、特定のシナリオを何度でも実行しようとしています。他のスレッドで、「フックの周り」がDRYの方法で行うための最良のオプションであることがわかりました。
以下は私のコードです:
したがって、機能ファイルを実行すると、次の出力とそれに続くエラーが表示されます。
visit_page
実行が PageObject gem に属するメソッドを処理するまで、すべてが期待どおりに機能しているようです。
ruby - Selenium WebDriver executeScript の問題 (Ruby で watir-webdriver を使用)
Watir WebDriver の browser.execute_script コマンドを使用して特定の JavaScript スニペットを実行する際に問題があります。
問題のJavascriptは次のとおりです。
なぜ私はそのような残虐行為を使わなければならないのですか?まあ、私がテストを開発している製品はそれほど悪いからです。各セルは同じ id 属性を使用するため、ドキュメント内のオブジェクトに直接ゾーンインすることはできません。さらに悪いことに、ドキュメントの深さは 2 フレームです。フレームセプション。
明らかな解決策 (watir-webdriver の API を使用) を使用することは、32 のグリッド行を埋めるタスクが半分になるため、現実的ではありません!! 1時間の。
上記の Javascript を取得して、ブラウザーの開発者ツールで実行できます。(この製品でサポートされているブラウザーは、互換モードの IE8、9 のみです。) jQuery や派手な JavaScript ライブラリーにアクセスできません。この JavaScript を使用すると、ほぼ瞬時に行が埋められます。
browser.execute_script コマンドを使用してこれを実行すると、
不思議なことに、私がちょうど使用した場合
次に、Net::HTTP ライブラリでエラーが発生します。これは、Selenium がスタック上のどこかでコマンドをブラウザに送受信するために使用されます。(具体的には: ERRNO::ERRCONNREFUSED)
ヘルプ?
編集:これは、コードを実行するために使用している直接のスクリプトです(そして、Javascriptの小さなビットを生成します):
このメソッドの data 引数はキーと値のペアのハッシュです。キーはページ オブジェクト アクセサーに提供されるメソッドの名前で、値は入力しようとしている値です。中間プロセスの一部として、ページ オブジェクト要素から id 要素を取得します (これは、各要素の識別子として提供されます)。
ページ クラスの設定方法には、少し特殊な構造があります。基本的な考え方は次のとおりです。
したがって、呼び出しの例は次のようになります (きゅうりのテストから)
これに加えて、このページに到達するためにいくつかの 'attach_window' 呼び出しが必要であるという不幸な問題があります (ページが一種のモーダル ダイアログにあるため)。この問題は、この相互作用に大きく関係している可能性があります。これが問題を引き起こすと私が考えることができる唯一のことです。
このSOの質問のポイントは、明らかなエラーを除外できる2番目の目を持っていることを願っています. 採用を計画している別の回避策があります。