Form filling

Now we will see an example of how to fill forms in a web page. Filling forms is actually the same as we have done when doing web searches, but this time we are going to execute a process that will fill a form that adds information into a web page.

For this example we are going to use a task management site called Toodledo (http://www.toodledo.com/). Sign up for a free account if you don't have one already, and write down your credentials. We will create a wrapper that adds new tasks to your todo list:

  1. Create a new wrapper called "toodledoadd".

  2. In your Init component wizard add the following parameters for the wrapper:

    Field nameData typeConstraints
    loginstringmandatory
    passwordstringmandatory and hidden
    taskdescriptionstringmandatory
    duedatestringoptional
  3. Create a new sequence component that receives the Start_1_output value as an input record.

  4. Record a navigation sequence to http://www.toodledo.com/tasks/index.php?signedup=1 , which is the URL of the main page of the task management UI in Toodledo.

  5. The sequence will first pass through the login dialog, so go ahead and record the steps needed to log in (setting your login and password in the text fields and clicking on "Sign in").


    Remember to use variables in the "Set text" dialog while recording the sequence, and the variable names should match the names you specified in the Init component's wizard.

    TIP
  6. Once authenticated, we have to record the following events:

    1. Click on "Add task".

    2. Set the description on the "Task" field.

    3. Set the due date in the "Due Date" field.

    4. Click "Save".


  7. After the sequence is recorded, import it in the Sequence wizard.

  8. Save the wrapper.

This wrapper is very simple but showcases how to build a wrapper that instead of extracting data from a website puts information back into the web. Traditional use cases for this type of interaction are websites that store results of some process or data analysis that has been carried out within Denodo.

You could also build a second wrapper for getting the current tasks out of Toodledo, and a third one for marking a task as completed. This way you will have a solution for interacting programatically with your TODO list, creating a pseudo-API when there is none offered by the service provider.