So I wrote a script in PHP that requires javascript to run with it. I've had a hard time finding the solution on how to run the javascript with php at the same time using some linux tool to make it automatic (since running it in my browser isn't a choice, I need it to be a crontab). Using the "php" command isn't a choice either since it does not run javascript. So I found a solution, it was lynx.

So here is my problem: for some reason, the javascript runs in my browser just fine, but not in lynx. Using lynx the page just loads without any javascript involvement. Is there a way to debug javascript in lynx, kind of what google chrome has where you can view what's going on from console, so I can find out what's causing the script not to run in lynx?

Edit:

So apparently lynx does not support javascript. In that case, my question is, what does? I need to run this script as a browser would but from the linux command prompt. And if OS matters in this case, I am running latest Ubuntu.

有帮助吗?

解决方案

Lynx doesn't support Javascript.

Update 1

Based on your summary of what you're trying to do (login to a site that requires JavaScript for the password encryption) I'd strongly recommend you look at using Selenium or another browser automation package. Even if you get the password submission working properly without such a layer, the site's probably going to have other issues if you use a minimalist browser like Lynx.

其他提示

Lynx does not support JavaScript, but the alternative text browser ELinks does, based on SpiderMonkey. It's somewhat experimental though; see the manual on how to compile it in.

Also, I'm really puzzled about what you're trying to accomplish here...

What you need is called a Headless Browser. For example PhantomJS is one of them. I think it is the most popular one.

If you only want to execute Javascript from the command line I would advise you something like nodejs or otto. The have a much smaller performance footprint as a whole headless browser.

If you need more than just plain Javascript, e.g. the DOM or so, you should try a headless browser (Chrome, PhantomJS) as suggested by others.

If you not only need a browser, but want to do automated testing with that browser, Selenium is still the way to go.

It really depends on your use case how much you need.

Update: Since a few months it is possible to use Chrome as a headless Browser now (Firefox is on its way too).

Selenium is the way to go, but as you notice, it needs a display. Which then needs to be launched, and yada yada yada, now you have quite a complex setup going on!!

Thankfully, there's yet another way to automate all that, and it's through an automation framework. I recommend Jenkins. It already has an addon to launch an x server.

So the approximate pipeline is as follows:

  • Forget about crontab
  • Setup a jenkins ubuntu server (with x installed)
  • Install the jenkins xvncserver(?) addon -- I think that's what it's called. Anyway this will launch an XHOST for you automatically.
  • Write selenium webdriver scripts that go to the location in question (easiest * is to use the Selenium IDE)
  • Have the selenium IDE output the webdriver scripts to any format, then have jenkins run it. I personally use the Java format, then use ant to build them.

As you can imagine, this is quite a setup, but it technically will do what you are asking. I'm sorry it's not as simple as piping wget to lynx.

Another way to go is just rewrite your webpage to DO STUFF without assuming a browser, for example, take a GET parameter that puts it in "auto mode" and then it will assume it's run from a cron and do it's happiness through a shorter circuit.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top