問題タブ [phantomjs]

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 投票する
1 に答える
867 参照

javascript - 更新された問題:: querySelector で可能性のある PhantomJS/Javascript の問題

PhantomJS (v1.5) と cli の javascript の両方を使用してテストを実行しています。テストは fedora/centos で実行されています。

このテストは、querySelector から html(type) 要素を返す際にエラー (ユーザーまたはその他) と思われるものを示しています。

2 つの項目がテストされます。1 つ目は入力、2 つ目はアンカーです

id=ICType の入力は正しく機能します。アンカーは、期待していた htmlAnchorType ではない href/content を返します。

私は、返された htmlAnchorElement で一種の foo.click() を実行できるようにしたいと考えています。これにより、選択したアンカーの href javascript が呼び出されます。ただし、返されるのが href コンテンツのみである場合、これは問題のようです..

ネットを見ても、私が間違ったことを思いついたわけではありません。

感想/コメント????

ありがとう

foo.js

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

javascript - 評価内の例外

私は、コード化がかなり悪く、恐ろしく遅い Web サイトと対話しようとしています。私が抱えている問題を例で説明します。

この Web ページには 2 つの選択ボックスがあり、最初の 1 つは国を選択するために使用され、変更時に Web サーバーに対して AJAX 要求が行われ、都市のリストが返されます。このリストは、2 番目の選択ボックスに入力するために使用されます。問題は、phanomtjs の page オブジェクトで evaluate 関数を使用して、最初の選択ボックスを反復処理し、正しいオプションを選択できることです。しかしその後、2 番目のボックスに値が入力されるまで n 秒待たなければなりません。現在、2 番目のボックスから都市を選択する前にタイマーを 25 秒間待機するように設定することで、これを「解決」しました。ただし、これは非常に悪い解決策です。まず、25 秒ではすべての状況で十分な長さではないため、タイムアウトして失敗することがあります。2 番目の問題は、ほとんどの場合、25 秒では長すぎることです。

そのため、2 番目のボックスが読み込まれるまで待機する方法を見つける必要があります。最初は、評価関数内で setInterval を使用して、選択ボックスに値が入力されているかどうかをテストできました。これは機能しますが、問題があります。setInterval は非同期であるため、このメソッドを使用すると、正しい選択が行われたかどうかを確認できなくなります。私が何を意味するかを説明するために、以下のコードは、待機する必要がないときにどのように機能するかを示しています。

その selectOption は、適切なオプション要素が見つかるまで select 要素を反復する関数です。失敗した場合は false を返します。この戻り値は評価された関数によって返されるため、機能したかどうかを確認できます。

もう 1 つのオプションは、Web ページのコンテキスト内で setInterval を使用して待機し、失敗した場合に例外を発生させることです。これをやってみましたが、Web サイトの範囲外で例外をキャッチできないようです。PhantomJS はターミナルに例外をダンプしますが、インターセプトできません。

これを回避する方法はありますか?それとも、固定待ち時間オプションを使用する必要がありますか?

編集:page.onErrorを使用しようとしましたが、慣れていないようです。

0 投票する
0 に答える
367 参照

ruby-on-rails - Rails 2.3 と phantomJS での競合状態

REE で実行されている Rails 2.3 アプリケーションがあります。カピバラ 1.1.2、キュウリ 1.1.0、ポルターガイスト (0.6.0 と github の最新版の両方を使用)、および phantomJS 1.5.0 を使用しています。私の問題は、phantomJS に競合状態があり、キュウリのテストがランダムに失敗する原因になっていると考えていることです。きゅうりのテストは、Chrome で実行すると完全に機能するため、問題はポルターガイストまたはファントム JS にあると確信しています。PhantomJS でキュウリ テストを実行すると (CI サーバーで実行できるように)、次のようなエラーがランダムに発生します。

ページの Javascript コードで 1 つ以上のエラーが発生しました:

cucumber features/account_creation.feature:79 # シナリオ: 古いユーザー名とパスワードでログインできるはずです cucumber features/account_creation.feature:88 # シナリオ: ログインを記憶できるようにして、ブラウザを閉じたときに自動的にログインしています

ポルターガイストの Github ページに基づいて、env.rbバージョン 1.3 より前のラックの競合状態の問題を解決するためにこれを追加しました。

しかし、これは私が言うことができる違いをもたらしませんでした. これがポルターガイストの問題またはphantomJSの問題であることを示唆しているだけであっても、どんな考えでも大歓迎です。次にそれについてどのように尋ねるべきかを知っています.

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

php - PHPからの応答でコールバックを使用してhttpリクエストを行う方法は?

PhantomJs サーバーへの POST 要求を実行し、応答を受信した後にコールバック関数を呼び出す php スクリプトを作成する必要があります。

これが私のphantomjsサーバーだとしましょう:

したがって、私のphpスクリプトからリクエストを行う必要がありhttp://localhost:8080、phantomjsが計算を終了してレスポンスを送信すると、コールバック関数を起動します。このトピックを見つけました: PHP で非同期 GET リクエストを作成するにはどうすればよいですか? . ここで役立つものはありますか? 私はこのcurlアプローチについて考えていましたが、私は完全なPHP初心者であるため、これらすべてを一緒に実行する方法がわかりません.PHPで非同期GETリクエストを作成するにはどうすればよいですか? .

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

php - PHPからphantomjsサーバーを起動し、応答を待つ

phpスクリプトからphantomjsサーバーを実行し、それに対してcurlリクエストを実行して、その応答を読み取りたいと思いました(最終バージョンでは、生成されたpdfへのパスが提供されます)。コンソールからphantomjsサーバーファイルを実行し、ブラウザでそのアドレスに移動すると、すべてが正常に機能します。これがserver.jsファイルです:

基本的に、ローカルホストアドレスを開き、ページのコンテンツをhtml文字列に切り替えてから、レンダリングされたページをpdfとして保存します。

今私のphpスクリプトが来ます:

ここにも魔法はありません。ターミナルでコマンドを実行phantomjs server.jsし、5秒後(サーバーを初期化する時間)にcurlPOST要求を実行します。
今私は2つのケースがあります:

  • コンソールからphpスクリプトを実行するphp script.phpと、プロセスが実行されていることを確認でき、ドックにアイコンが表示されているため、サーバーが起動しますが、応答がなく、PDFが作成されません。
  • ブラウザからスクリプトを実行すると、ドックにアイコンが表示されないため、サーバーが別の方法で起動します。まだ応答もpdfもありません。

誰かが私のコードに何か問題があるのを見たり、それをデバッグする方法を考えたりできますか?

OSX 10.7、php 5.3.6、最新のphantomjsでのテスト。サーバーを実行しているユーザー_wwwには管理者権限があり、ファイルを書き込んでいるフォルダーは777に変更されました。

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

javascript - href/Javascript でアンカーにアクセスする

javascript に接続された href を持つアンカーを持つシステムで CasperJS をテストします。いつものことをしている

上記のアプローチはどれも機能しませんでした。__utils__プロジェクトの Git リポジトリは、要素を呼び出す方法であるクリック メソッドを持つと思われる CasperUtils/ClientUtils ライブラリが Casper にあることを示していますhref="javascript:foo()"

ただし、これを実行する方法がわかりません。

誰かが CasperJS を使用していて、これがどのように実装されているかについてのコードのサンプルを持っているなら、私たちは感謝します!

理想的には、最終結果は次のようになります。

または、私が実行できるテスト コード ケースへのポインターがあれば、これがどのように実装されるかを確認できます。

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

php - casperjsとPHPを使用してデータを保存する

私はこれを行う方法についてのある種のチュートリアルまたは例を探していましたが、解決策が私の目の前にあることを理解していないか、誰もこれを実際に公開していません。

私がやろうとしているのは、casperjsを使用して、Webサイトでアカウントを作成するプロセスを自動化することです。いくつかの異なるユーザー名を提供し、最後に登録に使用したユーザー名とパスワードを含むファイルを出力したいと思います。

これを行うためにPHPを使用する必要がない場合は、それでも問題ありません。私はとても混乱しています。助けてくれてありがとう。

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

javascript - casper/phantomjs でクライアント側のコンソールを出力する

casperjs のドキュメントを調べたところ、クライアント側の JavaScript から console.log を確認できる場所が見つかりませんでした。これは可能ですか?

0 投票する
3 に答える
1613 参照

php - すべてのJavaScriptがロードされた後にDOMを出力する方法は?

タイトルとして、私の質問は、ページ上のすべてのDOMコンテンツを出力する方法です(サーバーコンピューターにテキストファイルとして保存するか、結果をajaxを使用して他のphp関数に渡します)?

私はいくつかの宿題をしました。curl は "curl http://google.ca > dom.txt" を使用してすべての DOM コンテンツを出力できますが、このアプローチでは Javascript が生成したコンテンツは保存されません。つまり、JavaScript コードは走りません。もう 1 つの方法は、JavaScript コードをページに埋め込んで、出力したい Web サイトをページにロードさせ、JavaScript コードを使用して、すべてがロードされた後にすべての DOM ファイルを保存することです。

phantom.jsがそのような仕事をできるかどうかはわかりません。できる場合、どうすればよいですか?

これを達成する方法について、どの団体でも詳細な回答を与えることができますか?

私はどんなソリューションにもオープンです。このプログラムは私のサーバー上で実行され、サービスを提供します。

前もって感謝します。

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

javascript - phantomjsの後にグーグルがホームにインデックスを付けることができるようにバックボーンアプリケーションのSEO

バックボーンのウェブサイトがあります。私はphantomjsを使用して、検索エンジンが_escaped_fragment_specに従ってjsリンク(#!/ something)を検索できるようにしました。私はグーグルウェブツールを使用して、グーグルが私のサイトをどのように見えるかを確認しました、そしてほとんどすべてが正しいようです。

ただし、メインページ(例:www.example.com;リンクに#!がないページ)では、googleは_escaped_fragment_specを送信しないため、ページはphantomjsに送信されず、jsは適用されないため、googleはほぼ空のページを探しています。

誰かがこれを示す方法、または問題を解決する方法を知っていますか?

ありがとう

編集:グーグルによると(https://developers.google.com/webmasters/ajax-crawling/docs/getting-started)あなたは頭に追加する必要がありますが、私はそれを追加しました、そしてウェブツール-グーグルとして見てください、そうではありませんメインページをjavascriptとして処理するシーム。何か助けはありますか?問題のあるサイトはhttp://www.boletus-app.com/です ありがとう