Retrieve Browser state information(Java)

  • Context: Java 
  • Thread starter Thread starter Yoyo_Guru
  • Start date Start date
  • Tags Tags
    State
Click For Summary

Discussion Overview

The discussion revolves around automating form filling on a website using Java, specifically focusing on how to determine when a browser has finished loading a page and how to handle pop-up messages indicating invalid data. Participants explore various approaches, including the use of JavaScript and external libraries, while expressing concerns about efficiency and the need for user input.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant seeks a method to pause execution until the browser has finished loading a page, avoiding hardcoded delays.
  • Another suggests using Greasemonkey and JavaScript for handling browser events, but the original poster prefers a solution integrated within their Java program.
  • There are inquiries about the possibility of incorporating JavaScript commands into a Java program.
  • Some participants propose using HTTP requests instead of browser automation for more control and reliability.
  • One participant mentions using the Robot class for simulating key presses but acknowledges its limitations and seeks a more efficient solution.
  • Concerns are raised about the complexity of reinventing existing solutions, with suggestions to utilize established frameworks or libraries.
  • Discussion includes the potential for Java and JavaScript to communicate, although clarity on implementation remains uncertain.
  • A suggestion is made to use AJAX for Java, but it is later retracted as potentially unnecessary for the original question.
  • Another participant mentions the unreliability of checking page load completion with static pages and recommends a timeout approach combined with content parsing.
  • There are questions about how to parse webpage contents in Java and which classes to use for that purpose.

Areas of Agreement / Disagreement

Participants express differing views on the best approach to automate form filling and handle page load events. There is no consensus on a single solution, and multiple competing ideas remain present throughout the discussion.

Contextual Notes

Limitations include the potential unreliability of certain methods suggested for determining page load completion and the need for further clarification on how to implement communication between Java and JavaScript.

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?
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 32 ·
2
Replies
32
Views
5K
Replies
2
Views
6K
  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 0 ·
Replies
0
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K