web-dev-qa-db-ja.com

javascriptを使用したLynx

そこで、PHPで実行するためにJavaScriptを必要とするスクリプトを作成しました。Linuxツールを使用して、同時にphpでjavascriptを実行する方法に関する解決策を見つけるのに苦労しました自動化するには(ブラウザで実行するのは選択肢ではないため、crontabにする必要があります。)javascriptを実行しないため、「php」コマンドを使用することも選択肢ではありません。 、オオヤマネコだった。

だからここに私の問題があります:何らかの理由で、javascriptは私のブラウザでうまく動作しますが、lynxでは動作しません。 lynxを使用すると、javascriptを使用せずにページが読み込まれます。 lynxでjavascriptをデバッグする方法はありますか。googlechromeがコンソールから何が起こっているかを見ることができるので、lynxでスクリプトが実行されない原因を見つけることができます。

編集:

したがって、どうやらlynxはjavascriptをサポートしていません。その場合、私の質問は何ですか?このスクリプトは、Linuxコマンドプロンプトからではなく、ブラウザーと同じように実行する必要があります。この場合、OSが重要であれば、最新のUbuntuを実行しています。

26
TheNotSoWise

LynxはJavascriptをサポートしていません。

更新1

あなたがしようとしていることの概要に基づいて(パスワードの暗号化にJavaScriptを必要とするサイトにログインする)、 Selenium または別のブラウザ自動化パッケージを使用することを強くお勧めします。そのようなレイヤーがなくてもパスワードの送信が適切に機能するようになったとしても、Lynxのような最小限のブラウザーを使用している場合、おそらく他の問題が発生するでしょう。

17
sh-beta

LynxはJavaScriptをサポートしていませんが、SpiderMonkeyに基づく代替テキストブラウザ ELinks はサポートしています。ただし、やや実験的です。コンパイル方法については manual をご覧ください。

また、私はあなたがここで達成しようとしていることについて本当に困惑しています...

9
Thomas

必要なものはHeadless Browserと呼ばれます。たとえば、 PhantomJS はその1つです。最も人気があると思います。

6

コマンドラインからJavascriptを実行するだけの場合は、 nodejs または otto などをお勧めします。ヘッドレスブラウザー全体として、パフォーマンスフットプリントがはるかに小さくなります。

単なるJavascript以上のものが必要な場合、例えばDOMなどの場合は、headless browserChromePhantomJS )その他。

ブラウザが必要なだけでなく、そのブラウザでautomated testingを実行したい場合は、 Selenium が引き続き使用できます。

それは実際にユースケースに依存します。

更新:数か月後、 Chromeをヘッドレスブラウザとして使用できるようになりました 現在(Firefoxも準備中) 。

1
JepZ

Seleniumが道のりですが、お気づきのとおり、ディスプレイが必要です。それから起動する必要があります、そしてやだやだやだ、今はかなり複雑なセットアップが進行中です!!

ありがたいことに、すべてを自動化するまだ別のの方法があり、それは自動化フレームワークを介しています。私はジェンキンスをお勧めします。 xサーバーを起動するためのアドオンが既にあります。

したがって、おおよそのパイプラインは次のとおりです。

  • Crontabを忘れる
  • Jenkins ubuntuサーバーのセットアップ(xがインストールされている)
  • Jenkins xvncserver(?)アドオンをインストールします-私はそれがそう呼ばれていると思います。とにかく、これは自動的にXHOSTを起動します。
  • 問題の場所に移動するSelenium Webdriverスクリプトを記述します(最も簡単なのはSelenium IDEを使用することです)
  • SeleniumにIDEを任意の形式で出力し、ジェンキンに実行させます。個人的にJava形式を使用してから、antを使用してビルドします。

ご想像のとおり、これはかなりのセットアップですが、技術的にはあなたが求めていることを行います。申し訳ありませんが、wgetをlynxにパイプするほど単純ではありません。

別の方法は、ブラウザを想定せずにWebページをDO STUFFに書き換えるだけです。たとえば、「自動モード」に設定するGETパラメータを使用すると、cronから実行され、より短い回路で幸福になります。

0
Jonathan