問題タブ [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.
node.js - 生成されたnode.js子プロセスの出力を1行ずつ解析します
を使用してnode.jsスクリプト内から実行しているPhantomJS/CasperJSスクリプトがありますprocess.spawn()
。require()
CasperJSはモジュールのサポートをサポートしていないため、CasperJSからコマンドを出力しstdout
、node.jsスクリプトからコマンドを読み込んで、spawn.stdout.on('data', function(data) {});
redis / mongooseにオブジェクトを追加するなどの操作を実行しようとしています(複雑ですが、そうですが、このためのWebサービスを設定するよりも簡単です...)CasperJSスクリプトは一連のコマンドを実行し、たとえば、データベースに追加する必要のある20のスクリーンショットを作成します。
data
しかし、変数(a ?)を行に分割する方法がわかりませんBuffer
...文字列に変換してから置換を実行しようとしましspawn.stdout.setEncoding('utf8');
たが、何も機能しないようです...
これが私が今持っているものです
javascript - page.evaluate で引数を渡す
PhantomJS page.evaluate() を使用してスクレイピングを行っています。私の問題は、Webkit ページに渡すコードがサンドボックス化されているため、メインのファントム スクリプトの変数にアクセスできないことです。これにより、スクレイピング コードを一般化することが難しくなります。
ページに引数をプッシュするにはどうすればよいですか?
flash - PhantomJS でフラッシュを動作させる方法は?
に準拠した PhantomJS 1.4.1 (Flash などのプラグインのサポートは 1.5 で削除されました) を使用してい--qt-4.8
ます。
PhantomJS 内で Flash を有効にできません。オプションを使用してい--load-plugins=yes
ます。QTWEBKIT_PLUGIN_PATH
libflashplayer.so を含むすべてのパスを設定します。
私はstrace
PhantomJSが見つけたことを見ることができますlibflashplayer.so
:
同じサーバーで、Flash は Firefox 10.0 で正常に動作します
Flash が PhantomJS で使用されていない理由は何ですか?
javascript - PhantomJSとiFrame
機能テストにphantomjs (1.5)とcasperjsを使用しています。
そこで、iframeがロードされたアプリであるvk.com(ロシアのソーシャルネットワーク)にログインします。
クリックしてボタンを押すなど、iFrameで要素を使用するにはどうすればよいですか?
node.js - PhantomJS インスタンスの「プール」を管理する方法
私は、1 つの引数 (URL) を取り、その URL から解決された DOM を表す html を返す、内部で使用するための Web サービスを計画しています。解決済みとは、Web サービスが最初にその URL でページを取得し、PhantomJS を使用してページを「レンダリング」し、すべての DHTML、AJAX 呼び出しなどが実行された後に結果のソースを返すことを意味します。ただし、リクエストごとにファントムを起動する (私は現在行っています) のは遅すぎます。Web サービスへの最新の呼び出しを提供するために常に利用できる PhantomJS インスタンスのプールが必要です。
以前にこの種の作業が行われたことはありますか? プール マネージャー/http プロキシ サーバーを自分でゼロから作成するよりも、この Web サービスを他のユーザーの作業に基づいて作成したいと考えています。
詳細なコンテキスト: これまでに見た 2 つの同様のプロジェクトと、それぞれを回避した理由を以下にリストしました。代わりに、PhantomJS インスタンスのプールを管理することについてこの質問が発生しました。
jsdom - 私が見たところ、ページ上でスクリプトを実行するための優れた機能を備えていますが、ブラウザの動作を複製しようとはしていないため、汎用の「DOM リゾルバー」として使用すると、.あらゆる種類のエッジ ケース、イベント呼び出しなどを処理するための多くの余分なコーディング。最初に見た例は、ノードを使用してセットアップしたテスト アプリの body タグの onload() 関数を手動で呼び出さなければならないことでした。深いうさぎの穴の始まりのように思えました。
Selenium - 非常に多くの可動部分があるため、長期間存続するブラウザー インスタンスを管理するためのプールのセットアップは、PhantomJS を使用するよりも複雑になります。マクロの記録/スクリプトの利点は必要ありません。Webページを取得してDOMを解決するのと同じくらいパフォーマンスの高いWebサービスが欲しいだけです(または、画像などを無視できるようにすればさらに高速です)。
javascript - PhantomJSとnode.jsを使用してWebページを保存およびレンダリングします
Webページを要求し、JavaScriptがレンダリングされるのを待って(JavaScriptがDOMを変更する)、ページのHTMLを取得する例を探しています。
これは、PhantomJSの明らかなユースケースを備えた単純な例である必要があります。適切な例が見つかりません。ドキュメントはすべてコマンドラインの使用に関するもののようです。
parsing - CasperJS: Google アナリティクスがエージェントを無視するようにエージェントを設定する方法
CasperJS を使用して単純なインデクサーを作成しました。Google アナリティクスでエージェントを無視して、すべてのリクエストが毎日の統計に含まれないようにしたい。
Casper エージェント変数 (ヘッダー) はどのように設定すればよいですか?
ember.js - ガードとジャスミンを使用したヘッドレス テスト Ember アプリケーション
ジャスミンとガードを使用して、Rails 3.2 アプリケーションの ember ベースのフロントエンドをテストしようとしています。このために、jasminerice と Guard-jasmine、phantomjs を使用します。セットアップは非常に簡単でシンプルで、いくつかのサンプル仕様を実行できました。残り火で遊ぶとなると、物事は狂ってしまいます。ビデオリーダークラスをテストする以下の仕様があります。loadVideo メソッドを呼び出すときに、対応するビデオ DOM 要素の値で videoHeight および videoWitdh プロパティを設定する必要があります。ブラウザで jasmine を実行するとテストに合格しますが、guard と phantomjs で実行すると失敗します。「undefined が 640 に等しいと期待する」というメッセージが表示されました。テストがphantomjsで実行されたときに、私のDOM要素が考慮されていないようです。
私の仕様は正しく書かれていますか?
node.js - phantomJS を node.js アプリにデプロイしますか?
「HerokuでPhantomJSを実行する」は、ノードアプリを使用しようとしているため、関連しているが少し異なる質問であることに気付きました。
node アプリ用の casperJS (phantomJS に基づく) スクリプトのデプロイに問題があります。アプリのディレクトリに PhantomJS 64 ビット バイナリを配置して Heroku にデプロイしようとしましたが、PhantomJS/bin
を実行しようとすると次のエラーが発生します。
私が読んだことから、これは QtWebKit ライブラリをインストールすることで解決できますが、Heroku にはこれがインストールされていません。使用できる別のホスティング プロバイダーはありますか、またはこのパッケージを Heroku にインストールする方法はありますか?
関連コード:
私は Nodester のベータ テストにサインアップしましたが、この時点ではドキュメントはまだかなり限られています。
編集: PhantomJS の lib フォルダーをノード アプリのルート ディレクトリにコピーするだけで、機能させることができました。
qt - MacPorts を削除した後、Qt WebKit で new Date("YYYY-MM-DD") が機能しなくなった
私の OS X 10.7.3 (Lion) ラップトップでは、Date コンストラクターを使用して Qt WebKit で JavaScript 日付文字列を解析できません。jasmine-headless-webkit または phantomJS のいずれかを使用すると、すべての呼び出しは次のようになります。
いつも戻る
有効な Date オブジェクトの代わりに。数週間前、すべてが正常に機能していました。同様のセットアップを使用して 6 台のコンピューターでこれを確認しましたが、他の場所では問題を再現できませんでした。
おそらく使用されていないと思われる古い MacPorts インストールを一掃することにしたときに問題が始まったことはかなり確信しています (私はずっと前に Homebrew に切り替えて、家の掃除をしていました)。私のシステムから削除された動的にリンクされたライブラリがあり、Qt が日付の解析に使用していると思われます。
この日付解析ライブラリの名前を知っている人はいますか? Homebrew でインストールするか、欠落している依存関係を手動で修復できるかどうか、何か考えはありますか?
Qt や他の多くのライブラリを再インストールしようとしましたが、問題は解決しませんでした。