Reputation: 899
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, similar to what Google Chrome has where you can view what's going on from the console. 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 the latest version Ubuntu.
Upvotes: 33
Views: 73429
Reputation: 3969
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.
Upvotes: 25
Reputation: 1269
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).
Upvotes: 1
Reputation: 303
What you need is called a Headless Browser. For example PhantomJS is one of them. I think it is the most popular one.
Upvotes: 7
Reputation: 7118
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:
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.
Upvotes: 1