問題タブ [poltergeist]
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.
cucumber - Poltergeist や PhantomJS で JavaScript を使用した Cookie の設定が機能しない
で Cookie を設定する Web ページがありdocument.cookie = value
、サーバー上での実行中に完全に機能します。
ただし、キュウリのテスト (Poltergeist/PhantomJS を使用) では、Cookie はページ間で保持されません。
テスト フローは次のとおりです。
- ページAが開きます
- ユーザーがボタンをクリックすると、JS がトリガーされて Cookie が設定されます
- ユーザーがページ B へのリンクをクリックする
- ページ B には、Cookie の値を反映するコンポーネントがあります
実行中のサーバーに対する実際のブラウザーでは問題ありません。
しかし、cucumber では、ステップ 4 の表示で、空の Cookie が表示されていることがわかります。
これを修正または調査する方法を知っている人はいますか?
javascript - このカピバラはフレークをテストしますか?
capybara-webkit や pollergeist を使用して JavaScript の動作をテストする場合、次のようなテストをよく見かけます (または、残念ながら記述します)。
...チェックボックスをチェックすると、クイックリロード後にチェックできる状態を保存するAJAXリクエストが作成されます。
AJAX リクエストが 2 番目の発生時までに完了しない場合visit '/somewhere'
、チェックボックスが間違った状態で読み込まれるため、そのテストはフレークすることが保証されているようです。
幸いなことに、このページには、チェックボックスのリクエストが完了している間に回転するスピナーもあるので、そのようにテストを修正できます。
ただし、私はまだ少し偏執的です。行が実行されたが、行の前のようにpage.check
スピナーを設定できなかった場合、その行はリクエストが開始される前に成功します。active
page.should have_css
チェックボックスによってトリガーされた JavaScript がactive
クラスを設定することを考えると、このテストがフレークしないことを保証できますか?
ruby-on-rails - Capybara、capybara-webkit、カスタム ファイル アップロード フォーム
次の HTML スタックを使用してカスタム アップロード フォームを作成しました。
ファイル フィールドはプロパティを使用して css を介して非表示にされdisplay: none
ます。そのため、ユーザーがラベル (カスタム スタイル) をクリックすると、ファイル添付ダイアログが呼び出されます。
私の機能テストでは、入力フィールドが非表示になっているため、ファイルを添付できません。考えられる解決策をいくつか試しましたが、どちらも機能しません。
また
そして他の多く。いつも不明な位置エラーで要素をクリックできませんでした。入力フィールドに重なっているラベルを削除したら、それを表示して、合格したすべての仕様を実行します。したがって、ここでの問題は次の事実です。
- 入力ファイル フィールドには
display: none
プロパティがあります (そのため、見つかりません) - 隠しファイル欄に重なっているラベルがある(多分)
Capybara-webkit ドライバーを使用して Capybara にこのデリケートな状況を適切な方法で処理させる方法はありますか?
ruby - PhantomJS / Poltergeist を使用した Capybara: ドロップダウンから値を選択しても Ajax 呼び出しがトリガーされない
非営利目的で、スクレーパーを作成しようとしています。以前に PhantomJS を使用したことがありますが、通常は魅力的に機能します。ただし、次の問題に遭遇しました。
私がしたいこと:
- http://de.soccerway.com/national/germany/bundesliga/2010-2011/regular-season/r11840/にアクセスしてください
- 「Spieltagごと」ボタンをクリックします
- 次に、マッチデーを保持するドロップダウン メニューからオプションを選択します。
- Ajax 呼び出しが完了するのを待ってから、必要な情報を取得する
残念ながら、選択したいオプションを選択できますが、その後何も起こりません。この動作を示すミニ スクリプトを作成しました。
変更前と変更後のスクリーンショットを比較すると、ドロップダウン メニューの数が変更されていることがわかりますが、テーブルの内容は変更されていません。また、ドロップダウン メニューが正しい位置に表示されず、代わりにスクリーンショットの左上隅に表示されます。
Selenium をデフォルトのドライバーとして使用すると動作しますが、私の経験でははるかに高速であるため、PhantomJS を使用したいと思います。
PhantomJS に Ajax 呼び出しをトリガーさせるにはどうすればよいですか?
PhantomJS 1.9.1、カピバラ 2.1.0、ポルターガイスト 1.3.0 を使用しています。
ruby-on-rails-3.2 - Rails : Poltergeist は完全に機能する phantomjs を見つけられないようです
私のサイトの 1 つのコンテンツをポルターガイストとカピバラで定期的にチェックする小さな Rails アプリを作成しました。私のMacの開発では、すべてがうまく機能します。しかし、本番サーバーでテストすると、次のサーバーが得られます。
Capybara::Poltergeist::PhantomJSFailed (PhantomJS はゼロ以外の終了ステータス 127 を返しました。システムで phantomjs が正常に実行されることを確認してください。phantomjs
これは、Javascript REPL を提供するコマンドを実行するだけでテストできます。):
Phantomjs が動作します。コマンドラインからテストしました。さらに困惑しているのは、本番サーバーの Rails コンソールからメソッドを実行したときにも機能することです。
何か案が?
ruby-on-rails-3 - click_on と click_link の違いは?
リクエストスペックを書いていて、poltergeist-1.0.2 と capybara-1.1.2 を使っています。次のコードがあります。
ログインには、ユーザーが正常にログインしたことを示すフラッシュメッセージがあります.click_linkを使用している場合、カピバラが要素「仮想端末」を見つけることができないため、スペックは失敗しますが、click_onを使用している場合はすべて合格します. 「仮想端末」はボタンではなく、リンクです。
click_on と click_link の違いは何ですか。