Java Retrieve Browser state information(Java)

  • Thread starter Thread starter Yoyo_Guru
  • Start date Start date
  • Tags Tags
    State
AI Thread Summary
The discussion revolves around developing a Java program that automatically fills out web forms and navigates between pages. The main challenge is determining when a page has fully loaded to avoid hardcoding delays, as loading times can vary significantly. Suggestions include using JavaScript event handlers, specifically `window.onload`, to detect page load completion, though integrating Java with JavaScript directly can be complex.Participants emphasize the importance of utilizing existing libraries or frameworks to streamline the process rather than creating custom solutions from scratch. There is a mention of using HTTP requests to bypass browser interactions entirely, which could simplify the task. Additionally, handling pop-up messages for invalid input is discussed, with suggestions to implement listeners or checks for such events. Parsing page content in Java is also mentioned as a potential solution to determine load completion, though specifics on classes and methods for parsing are not provided. Overall, the conversation highlights the need for efficient programming practices and leveraging existing tools to enhance automation in web form filling.
Yoyo_Guru
Messages
32
Reaction score
0
I'm working on a program that automatically fills forms out on a website for work. It uses the tab key to navigate the page to the different fields. However I do not know how to make it pause for the browser to load the page other than hardcoding some time into it. Is there a way to determine when the browser has finished loading a page in java? For example if the program fills out a page and needs to navigate to the next page, I would like it to wait until the browser is finished loading the next page before continuing to populate fields without having to use some set time. This is important because some page navigations are variable and take up to a few minutes.

Also if some fields do not fit the specifications of the website then a message will pop up informing the user that the data entered into the fields is invalid. Is there a way to set some sort of listener for if this happens? I would like to make the program pause and wait for user input when this happens. I just do not know how to determing when this occurs.
 
Technology news on Phys.org
Typically for something like this I'd use a browser plugin called Greasemonkey, javascript has all the browser event handlers you're looking for.
 
DavidSnider said:
Typically for something like this I'd use a browser plugin called Greasemonkey, javascript has all the browser event handlers you're looking for.

I'd prefer to keep it within the program just for sake of ease and so that others could use it without a hassle. Do you know of a way to include the capabilities mentioned in my original post without having to use another program/plugin?
 
Have you taken DavidSnider's advice and looked at the event handlers available to you?
 
He said that javascript had those event handlers. Is there a way to include javascript commands or classes in a java program?
 
What libraries\frameworks are you using to populate the fields right now? How much control do you have over the website you're entering the data into?

I don't really know the details of your program so it's kind of hard to make a suggestion.

Using an external program to fill out form fields in a browser seems kind of kludgey to me (no offense. sometimes there is no choice, I understand).

Another way to go is to forgo the browser bit all together and just craft your own HTTP Requests and parse the responses.
 
I've actually been filling the forms using the robot class to simulate key presses, I know its not the best way but I am not familiar with scripts and I wanted it to work with all page types, the program we use now does not work with flash and I want to avoid anything like that popping up. I have it about completed and all I really need to do is put in a while loop between the simulated key presses that will only end once the browser is done loading. And an if statement that will pause the program if a popup message appears.
 
Yoyo_Guru said:
I'd prefer to keep it within the program just for sake of ease and so that others could use it without a hassle. Do you know of a way to include the capabilities mentioned in my original post without having to use another program/plugin?

No, seriously, don't re-invent the wheel. If there's well known framework or library that does it, USE IT.

This is computer programming, an engineering discipline, not art.

I admit it will take 1 day or so to read the API and learn how it works but you will save a whole boatload of trouble designing and testing your own libraries. Why do you use the system date function instead of computing the day of the week by yourself given the date?
 
rorix_bw said:
No, seriously, don't re-invent the wheel. If there's well known framework or library that does it, USE IT.

This is computer programming, an engineering discipline, not art.

I admit it will take 1 day or so to read the API and learn how it works but you will save a whole boatload of trouble designing and testing your own libraries. Why do you use the system date function instead of computing the day of the week by yourself given the date?

Well I'm already done with most of the code, and I was using a pause for the webpage to load before but that's not the most efficient way. Just don't want to have to start all over again. If I did make a separate javascript program would I be able to have the two communicate or run methods from the java program in the javascript or something along those lines?
 
  • #10
window.onload = function () { alert("It's loaded!") }
 
  • #11
rorix_bw said:
window.onload = function () { alert("It's loaded!") }

I don't want to alert the user, I want to alert the program, the point is for it to be completely automated without the need for user input once the automation has begun, the user just has to set it up.
 
  • #12
Yoyo_Guru said:
I don't want to alert the user, I want to alert the program

Change the body of the function to be your code, not the popup.

BTW `window.onload` is javascript.
 
  • #13
My code is in java though. I already wrote the majority of the program in java. Can I call methods from the java program in the function?
 
  • #14
This does far more than you need, it's basically ajax for java

http://directwebremoting.org/dwr/index.html

edit: I am sorry, please ignore this. I'm tired and I'll edit it later. I don't think that;s what you need.

Basically I misread the question and didnt't realize that it wasn't your *own* webpage so you don't have the ability to put javascript into the page source. I'll call a friend, he should know.
 
Last edited:
  • #15
OK friend says he doesn't know any *simple* way of doing it. With a static page you can do some dirty code to check it, but it's not reliable. He recommends you time out the download after a set interval, then parse the contents of the page to determine if you think it's complete. I am sorry I screwed up and misread the question.
 
  • #16
rorix_bw said:
OK friend says he doesn't know any *simple* way of doing it. With a static page you can do some dirty code to check it, but it's not reliable. He recommends you time out the download after a set interval, then parse the contents of the page to determine if you think it's complete. I am sorry I screwed up and misread the question.

ok. I'm really not familiar with most webpage/website stuff, have not run across a need to use it before. How do I parse the contents of the page in java? What classes would I use for that?
 
Back
Top