Beginner Tutorials
Click install on the Kapplet. This will add an instance of the Kapplet to My KappZone. Click My KappZone
to view it. To test that the Kapplet works, click on it and click Start. This will run the robot and present
the result in a table. It is also possible to download the results as excel.
Now that we have seen that the Kapplet works, it is time to publish it to the users. First close the results,
then navigate to the Kapplets Repository. From here you have to right click the Kapplet and choose to
Enable Selected. This will enable the Kapplet for users.
Going  back  to  My  KappZone  we  can  see  that  the  diagonal  lines  disappeared  from  the  Kapplet.
Congratulations, you have now published your first Kapplet to the KappZone.
The next tutorial will teach you how to create a type in Design Studio.
Type Beginner's Tutorial
What follows is the Type Beginner's Tutorial video, along with a transcript of the video.
Videos are not included in the PDF. Please visit open this url in
a browser to see the video.
General Introduction
This is the fourth of four beginner tutorials which will guide you through your first project with Kapow
Katalyst. It is advised to complete the other Beginner Tutorials before this tutorial.
You are about to learn how to build a type in Kapow’s Design Studio. Please feel free to follow along
on your computer.
Introduction to Types
In Kapow Katalyst, variables are used by robots to store data in. Robots use variables as input, output or
to store temporary values during execution. These variables are categorized by types. Examples of types
are text, image, PDF, number and so on. The given examples are all what we call simple types. That is,
types which are predefined in Design Studio.
Alternately we can create our own Complex Types. Think of a complex type as a bucket of simple types.
Let me explain with an example.
In these beginner tutorials we have been automating the process of extracting and storing the most recent
stories from News Magazine. From these three articles we extracted the title and the short piece of text
that is given. The title can be held by a variable of the simple type short text and the preview by a variable
of the simple type long text. We have to design our complex type to contain each one of these.
Creating a New Type
With Design Studio open, create a new complex type by right-clicking the default project and choosing
New>>Type... A window opens, requesting a name for the new type. Since this is our first type we will
call it MyFirstType.type. Click finish and the type editor opens. Notice that the type we just created has
now been highlighted in the projects view on the left.
Adding Attributes
The most important part of the type editor is the list of attributes associated with our new type. Attributes
describe the different values that a variable of our complex type can contain. Each attribute has a name,
a type, and a list of other properties associated with it.
Pdf reader link - insert, remove PDF links in, ASP.NET, MVC, Ajax, WinForms, WPF
Free C# example code is offered for users to edit PDF document hyperlink (url), like inserting and deleting
adding links to pdf in preview; add a link to a pdf
Pdf reader link - VB.NET PDF url edit library: insert, remove PDF links in, ASP.NET, MVC, Ajax, WinForms, WPF
Help to Insert a Hyperlink to Specified PDF Document Page
add links to pdf; add url pdf
Beginner Tutorials
Let’s start by making the title attribute. Add a new attribute by clicking the plus sign in the lower left
corner of the attribute list. A new window opens in which we can configure the new attribute. Name the
attribute “title” and select for it the type “Short Text”. Short Text is a simple type which can contain text,
no longer than one line. Click OK to add the attribute to our complex type.
Likewise add an attribute named preview to contain the short article preview. This attribute should be of
the type Long Text which defines a text longer than one line.
What we have now made is a complex type from which we can make variables in a robot. Variables of
the type MyFirstType will then be able to hold two values; title and preview. Save the type by choosing
save from the file menu.
Changing the robot
MyFirstType.type is now exactly the same as the complex type post.type which we used in the Beginner
Tutorial on robots. If we open MyFirstRobot.robot we can now switch the post variable for a variable with
the type MyFirstType.
Do this by right clicking the post variable in the variables view and choosing edit variable. In the Edit
Variable window that opens, choose MyFirstType as the type for this variable and click OK.
The last step is to save and upload the modified robot to the Management Console. It will automatically
take the place of the previously uploaded version.
Congratulations you have now fully completed your first project with Kapow Katalyst.
RasterEdge .NET Document Imaging Trial Package Download Link.
Adobe PDF. XDoc.PDF. Scanning. XImage.OCR. Microsoft Office. XDoc.Word. XDoc.Excel. XDoc.PowerPoint. Barcoding. XImage.Barcode Reader. XImage.Barcode Generator.
c# read pdf from url; add a link to a pdf file
C# PDF Library SDK to view, edit, convert, process PDF file for C#
RasterEdge PDF SDK for .NET package offers robust APIs for editing PDF document hyperlink (url) and quick navigation link in PDF bookmark.
adding hyperlinks to pdf; convert excel to pdf with hyperlinks
Advanced Tutorials
This section contains tutorials on advanced topics of Kapow Katalyst.
Branches, Robot States, and Execution Flow
What follows is a video explaining the concepts of Branches, Robot State, and Execution Flow.
Videos are not included in the PDF. Please visit open this url in
a browser to see the video.
Video transcript:
This tutorial will explain how and why to use branches in you robots. In the process it will be necessary
to introduce the concept Robot States and discuss robot execution flow in general.
If you have completed the beginner tutorials you will know that robot execution starts at the leftmost step
and continues sequentially to the end step, where robot execution terminates. This is an example of a linear
robot with no Branch Points.
Before showing you the branch point we have to introduce the concept of Robot States. At every step, the
robot has various elements which make up its state. The most important elements are the currently open
windows and frames and current values of variables, but the state also includes cookies, authentications
and so on.
All of these elements make up the robot state.
Back in the robot view we have now introduced a branch point. It's been inserted by selecting Add Branch
from the Edit menu in Design Studio.
The robot now sequentially executes each branch from top to bottom. Every time the robot reaches an end
step, execution continues from the next branch.
So why go through the trouble of using multiple branches, instead of having a completely linear robot?
Well there are many answers to this question but the most important reason is that the robot reverts to its
previous state every time execution goes back to a branch point. As we talked about before, state includes
open pages, variable values, and so on, so every time the robot goes back to the branch point, it returns to
the page it was on when it passed that branch point and forgets everything that happened in the branch.
Let me show you an example of how to use this.
I'm currently working on a robot which searches the site Momondo for travels to three different destinations
but from the same departure city. The robot enters departure city into a form, then splits into three branches
and enters three different destinations and clicks to search. Clicking the branch point we enter the state
which the robot has when it splits into multiple branches. This is the state which the robot reverts to each
time a new branch is executed. This means that the robot does not have to load the site and input the
departure city three times, wasting time and CPU power. The robot simply rolls back and continues where
it left off, entering a new destination into the form for each branch.
You can use this technique every time one page has to be handled in multiple different ways. We can even
join these three branches again since they all use the same steps for the last part of the branch.
To redirect an arrow, first select it by holding Ctrl then clicking on it. Then drag the end of the arrow to
the step to which you want to connect it.
How to C#: Basic SDK Concept of XDoc.PDF for .NET
XDoc.PDF for .NET allows C# developers to edit hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
add page number to pdf hyperlink; convert a word document to pdf with hyperlinks
VB.NET PDF: Basic SDK Concept of XDoc.PDF
XDoc.PDF for .NET allows VB.NET developers to edit hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
add links pdf document; add hyperlink to pdf in preview
Advanced Tutorials
You can also create a new arrow by dragging from the right side of one step to the left side of another.
As you may have guessed, you can make some pretty creative robot trees in this fashion, but don't panic!
The execution flow is determined by one simple rule and one rule only.
Once execution reaches an end step, execution will continue from the next branch of the most recently
reached branch point.
Let me repeat that for you.
Once execution reaches an end step, execution will continue from the next branch of the most recently
reached branch point.
Once execution reaches an end step, execution will continue from the next branch of the most recently
reached branch point.
It's pretty intuitive once you get the hang of it.
Okay I have a confession. There are other rules which govern execution flow and there is one exception
to the rule mentioned before: For Each loops.
For Each loops include the For Each Tag action, the For Each Window action, the For Each URL action,
If you have completed the beginner's tutorials, you have used a For Each Tag loop in your robot, and know
how it works. Now we have a new way to think about For Each loops. You can think of a For Each loop
step as a branch point where each iteration of the loop corresponds to a branch.
In other words: Once execution reaches an end step, execution will continue from the next branch of
the most recently reached branch point or from the next iteration of the most recently reached loop step,
whichever comes first.
Loops can be used very effectively in constellation with branches.
There are also other aspects which can make robot execution flow non-linear. One of the most prominent
is Error Handling. When an error occurs at a specific step, the error handling of that step decides where
the robot will continue execution from. Keep this in mind. To learn more about error handling click the
question mark at the top right corner of the Error Handling tab.
So what if I want to keep some information from one branch to the next? Well, let's talk a little bit more
about robot states, because not all elements are kept in the robot state. Global variables for example are
totally linear in time throughout execution of the robot and never revert to earlier values when the robot rolls
back to former states. This means that you can transfer information among branches or among iterations
of a loop.
You can convert any variable to a global variable by checking the checkbox Global when adding the
variable to your robot.
Also note that Try Steps look similar to Branch Points but they are not the same. Try Steps are only
activated by error handling.
Looping Basics
What follows is a video showing how to implement basic looping in your robots, along with a transcript
of the video.
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
create PDF document viewer & reader in ASP.NET web application using C# code. Related C# PDF Imaging Project Tutorials! Please click the following link to see
pdf link open in new window; pdf hyperlinks
C# Raster - Raster Conversion & Rendering in C#.NET
add hyperlink to pdf in; clickable links in pdf files
Advanced Tutorials
Videos are not included in the PDF. Please visit open this url in
a browser to see the video.
Video transcript:
This video will give you an introduction to looping within your robots. In particular we will be looking at
the types of loops which can be accessed directly from the Browser View.
Looping is both touched upon in the Beginner Tutorial Videos and in the video on Branches, Robot States,
and Execution Flow. If you have no experience with looping, I highly recommend you to take a look at
these videos before proceeding with this video. Take special notice of the way loops alter the execution
The most useful robots are often those which perform a large quantity of actions, simply those which get
a lot done. Often this includes performing the same operations in a number of similar cases. An example
is the NewsMagazine robot used in the Beginner Tutorials. This robot uses a For Each Tag step to extract
text from several blog posts. The For Each Tag step is just one of many loop steps to which the same logic
applies. They all somehow let you perform the same procedure in a number of related situations.
The most basic loop steps are categorized as For Each Tag Loops, because they all somehow loop through
tags in the current window. Let me go through these basic loops one at a time.
For Each Tag
The first of three loop steps we are going to discuss in this video is the loop literally called For Each Tag.
For Each Tag loops over each tag of a given name directly within the found tag. The first tag in the loop
has been indicated by the blue box in this screenshot of the source view. I now overlay the screenshot with
lighter blue boxes to show the following iterations of the loop.
For Each Tag is the loop step which I find myself using most often, simply because of its mixture of
flexibility and ease of use. It is also the loop step which we used in the Beginner Tutorial Videos.
Whenever I need to loop over a selection of similar tags, like the products listed on this page, the first thing
I try is to right click the first element that I want and select Loop >> For Each Tag. Design Studio then
sets up a For Each Tag loop which loops through tags similar to the one I right clicked.
I can now iterate through the loop, using the arrows on the For Each Tag step, to view all the named tags
formed by the loop. As discussed in the Beginner Tutorial Videos the blue box formed by a loop is called
a named tag and is used as a point of orientation for Tag Finders of following steps, so if we insert a step
which extracts the price of the first product, the following prices will be extracted likewise in subsequent
iterations of the loop. This is the way all loops, considered in this video, operate.
Sometimes, however, it does cause problems to insert the loop, like here on I right click the
first element that I want and choose the For Each Tag loop, but the resulting loop only includes the topmost
listed video. We can see this by trying to go to the next iteration. This results in a window opening to tell
us that we have reached the last iteration of the loop.
To fix this I have to go directly to the configuration of the loop step where, in this case, I need to remove
the specification of class to loop over. Design Studio guessed that we only wanted tags with the class top
but really we want to loop over every listed item, independent of class. I delete the class specification and
the loop now works as expected.
To use For Each Tag effectively you should study the different ways to configure the For Each Tag step.
For Each Table Row/Column
VB.NET PDF: Create PDF Document Viewer in C#.NET for Document
reading PDF document in ASP.NET web, .NET Windows Forms and mobile developing applications respectively. For more information on them, just click the link and
pdf edit hyperlink; chrome pdf from link
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
Besides, here is the quick link for how to process Word document within We are dedicated to provide powerful & profession imaging controls, PDF document, image
adding links to pdf document; pdf reader link
Advanced Tutorials
For the following loops it should be mentioned that they are often interchangeable and a given situation
may be handled in any number of ways. I will try to teach you the basic principles of each loop type so
you can be intelligent about which type you choose, but there is no single correct way of doing things.
The two next types of loop steps we will look at are both derivatives of the For Each Tag step, but they have
more specific uses. They are called For Each Table Row and For Each Table Column and they respectively
loop through rows and columns of a table. As with the For Each Tag step they have been conveniently
implemented in the right click menu.
In this screenshot the first row is shown with the named tag marked 1 and the first column is the named tag
marked 2. As you can see, combining the two types of loops will let you loop over every element in a table.
To insert a loop over table rows or columns, right click on any table element and select the appropriate
action from the Loop submenu. You may either choose to include or exclude the first row or column.
I have now inserted a loop which loops through each column of the newest Ikea furniture. Notice that the
name of the loop step is For Each Tag. Instead of having a unique step for looping through tables, the For
Each Tag step has just been automatically configured to loop through columns in a table.
For Each Tag Path
The next type of For Each Tag loop is called For Each Tag Path. It is very similar to For Each Tag, which
we just discussed.
The difference between the two is that For Each Tag Path loops over tags that are at any level inside the
found tag whereas For Each Tag only loops over tags that are directly inside the found tag.
Sometimes the tags you want to loop over are not all directly inside one parent tag, or possibly the tags
you want to loop over are all on different levels then you will need to use the For Each Tag Path loop.
Notice in this example how the div tags looped over are all within a td and a tr tag and are therefore not
directly within the found tag.
The easiest way to determine whether to use For Each Tag or For Each Tag Path is to look at the page
structure in the Source View.
For Tags with Class
Just like For Each Table Row and Column were derivatives of the For Each Tag loop as is the For Tags
with Class a derivative of the For Each Tag Path loop. As an example of the For Each Tag Path loop let
me show you how to use this derived version.
Okay, now let us delete the table column loop we set up and take a look at the For Tags with Class. This
loop iterates over all tags with the same value of their class attribute, which is often the case for tags with
similar content. This time we have to be a bit more specific which tag we select before right clicking and
we also have to keep an eye on the source view.
Usually using this loop goes something like this: As we click on the tags containing each product we
look in the source view and notice that they all have the same class, namely productContainer. Once we
realize this we can simply right click on one of the tags and choose Loops >> For Tags with Class >>
productContainer. We then iterate through the loop to check that the named tags match our expectations.
Again notice that the inserted step is not called For Tags with Class but rather For Each Tag Path, which
has simply been configured to perform the specific task.
For Each URL
The last loop we will take a look at is the For Each URL action, which is in a category by itself.
Advanced Tutorials
For Each URL simply loops through each URL inside the found tag. It is often useful if you need to extract
or click on every link in a specific area of a page, regardless of the context of the link.
For Each URL is most easily inserted by selecting the tag containing the links you would like to loop over,
then right clicking the selection and choosing Loop >> For Each URL.
I have now set up a loop which iterates through each URL in this article. It by default skips duplicate URLs.
Let's leave the For Each URL action at that. Just note that For Each URL has a number of configuration
possibilities which can be changed in the step view.
Finally I have two notes that will help you when using loops.
Note 1
Just to spell out what I said in the video on Branches, Robot States, and Execution Flow: A For Each loop
step, like any of those in this video, executes every subsequent step in the robot view for every iteration
of the loop, so if you want your robot to continue execution beyond the loop, then you will have to insert
a separate branch before the loop step. This branch will then be executed after the loop has finished.
Note 2
It is often nice to be able to break a loop or skip an iteration based on certain conditions. If we for example
reach an iteration where one of the steps within the loop cannot be performed, it would often be logical
to skip this iteration altogether.
As mentioned in the video on Branches, Robot States, and Execution Flow this can be done by adjusting
the Error Handling of the step that fails. In the Step Error Handling View you can choose Next Iteration
or Break Loop if an error occurs at this step.
At default this option is set to Skip Following Steps which corresponds to letting the robot hit an end
step at its current execution position. In other words, if an error occurs at this step, the robot will go back
and execute the next branch of the most recently reached branch point or the next iteration of the most
recently reached loop step, however it will also cause an API Exception and Log an Error as indicated
by the check boxes.
These were just the basics of looping. To learn more check out the Loops in Forms and Repeat-Next Loop
videos. Also feel free to go to to read about loops in greater detail.
Loops in Forms
What follows is a video demo showcasing some of the loop steps which apply to forms, along with a
transcript of the video.
Videos are not included in the PDF. Please visit open this url in
a browser to see the video.
Video transcript:
This video will give insight into types of loops which are useful when working with forms. It is a direct
continuation of the Looping Basics video, and will extend on the knowledge obtained there.
Many of the loops discussed in this video will have a form similar to the For Each Tag loops from the
Looping Basics video but the form loops are all different from the For Each Tag loops in that they don't
assign Named Tags for each iteration, instead they perform some other action for each element they work
For Each Loops in Forms
Advanced Tutorials
There are two For Each Loops and one other loop specifically designed to be used with forms. They are
called For Each Radio Button, For Each Option and Loop Field Values.
I will be demonstrating each of the Form Loops on this library search page.
For Each Radio Button does what you would expect; it selects one radio button in a group for each iteration.
The easiest way to insert the step is to right click a radio button and select For Each Radio Button in the
Loop submenu. Iterating through the loop we see that each radio button is selected sequentially.
The next form specific loop is called For Each Option. It loops through options in a drop down list. Again
it is easily selected from the right click menu. Once selected; a window appears asking whether you would
like to skip any of the options of the drop down. This is useful for skipping any options that are not
appropriate for what you want to do. In this case I will loop through all the options. Each option is now
selected when clicking the arrows on the loop step.
The last loop I want to discuss in relation to forms is called Loop Field Values . This is not a For Each
loop, which means that it is used slightly differently from the other loops I have described. It can be used
on any text input field to loop through listed values that are then inserted into the field. One value for each
iteration of the loop. Again we simply right click and select the Loop Field Values option. We can now
choose which types of values to loop through. We can either choose one of the predefined options or we
can compile our own list of values that we would like the robot to input. Since we are searching a library I
will compile my own list consisting of Hemingway, Shakespeare, and Poe. Iterating through the loop we
now observe that the stated authors are entered in to the text input field.
That concludes this video on Loops in Forms. To learn more go to
What follows is a video demo introducing the Repeat-Next loop, along with a transcript of the video.
Videos are not included in the PDF. Please visit open this url in
a browser to see the video.
Video transcript:
This video will give insight into an advanced but very useful loop called a Repeat-Next loop, which works
particularly well for looping through pages where each page leads to the next.
We will build upon the skills learned in the Looping Basics video, so make sure to watch that first.
This loop type is the oddball in the looping family, or maybe you could argue that it is not even part of
the family because the way this loop is designed is totally different from all the other loop steps in Design
First of all the Repeat Next loop consists of two individual steps which need to be used collaboratively
to have any kind of effect.
The concept is actually pretty simple: you place a Repeat step followed at some point by a Next step.
When execution reaches the Next step, execution will revert back to the Repeat step and proceed execution
from there, marking one iteration of the loop. If a Next step is not reached after the Repeat step then the
loop will terminate.
The catch here, and also what makes the Repeat-Next loop so genius, is that while most of the robot state
is reverted at the beginning of each iteration, the page reached at the Next step is actually transferred to the
next iteration of the loop. So unlike the other loops we have looked at where the entire robot state is reverted
at the beginning of each iteration, we can handle a different page in each iteration of the Repeat-Next loop.
Advanced Tutorials
A typical example of using the Repeat Next loop is when looping through multiple pages of search results.
We insert a Repeat step … followed by a step which clicks to get to the next page … and then a Next step
… It's as simple as that to loop through all the pages. We can now use the arrows on the Repeat step to
iterate through the loop and observe that a new page is loaded for every iteration.
Of course we still need a way to terminate the loop. This can be done by setting the error handling of the
Click step to “break loop”. If the click step does not find a link to the next page, we assume that we must
have reached the last page and the loop breaks.
If we then want to perform some steps on each page, we can add a branch step after the Repeat step … and
add a new top branch. In this new branch we can add loops and other steps without them being influenced
by the Click and Next actions in the other branch. I can for example add a loop over all the search results
on each page … extract information from each result … and return that collected information. In total I get
a robot which extracts every result from every page of the search. We can get an idea about the execution
flow by single-stepping through the robot in Debug Mode. I have sped up the recording so you can clearly
see how all search results are extracted, one page at a time.
Remember the form in which the Repeat-Next loop is used here. A top branch which executes the steps
you want to perform on each page and a lower branch which loads the next page and calls the next iteration
of the loop. This constellation is useful and very common when using this type of loop.
Note that setting the error handling of a step to “Next Iteration” does not work with Repeat-Next loops. In
order to proceed to the next iteration, a Next step must have been executed.
Try Step
This is a video explaining how to use the try step to set up conditions and error handling in your robots.
Note that this video is quite advanced.
Videos are not included in the PDF. Please visit open this url in
a browser to see the video.
Video transcript:
This video will demonstrate how to use try steps when building robots in Design Studio. Applications of
the try step are crucial for building robust robots acting on a dynamic web environment where changes
in structure are commonplace. Use cases include trying multiple different strategies for interacting with
or extracting from a website, and setting up conditional statements in a robot. We will go through two
examples in this video, demonstrating the two use cases, starting with the latter.
As a first example we'll be using ExtractFromTable.robot, which is a basic robot that extracts data from a
table on the News Magazine website. It can be found under Robots in the Examples folder of the default
project. I open the robot and hide the projects view.
Once open, you will notice that the robot has only one path to follow in the robot view until it reaches this
diamond shaped step called a try step. What a try step does is set up multiple alternatives for the robot
to try. A try step can have any number of alternatives which are shown as dashed arrows emerging from
the right side of the try step. If an alternative succeeds the robot continues as usual, ignoring any other
alternatives from that try step. If an alternative does not succeed, however, the robot goes back to the try
step and tries the next alternative.
To use try steps it is therefore important to understand what I means for an alternative to "succeed" or "not
succeed"? Let me try to demonstrate with this example robot.
Advanced Tutorials
ExtractFromTable is a simple robot that extracts person information from a table by using a loop. Clicking
the “for each tag” step and scrolling down reveals the table which the robot extracts from. Inside the loop,
which loops through the rows in the table, the four pieces of information for each person are assigned to
different attributes of the person variable. The try step is used to assign either true or false to the isMale
attribute, based on the value of the last column in the table, called sex. The column can have either one of
two values, “Male” or “Female” and we want to assign true or false to the isMale attribute respectively.
To test the value in the sex column, a Test Tag step has been inserted in the first alternative. Test Tag is a
step which can conduct an action based on whether the found tag matches a specified pattern. Clicking the
Test Tag step we see that the found tag is the cell in the sex column of the row from which we are extracting
in the current iteration, and the pattern to match is simply set to "male" and only matches against text,
ignoring case. If the pattern matches, the step then does what is specified in the Error Handling Tab. Under
Error Handling the step has been set to "Try Next Alternative", which is also indicated by the small icon
in the upper left corner of the step. This means that if the sex is male, and the pattern is thereby matched,
the Test Tag step will do what is specified under Error Handling and try the next alternative. The second
alternative therefore, has a step that assigns "true" to the isMale attribute. If the pattern is however not
matched, the Test Tag step does nothing and execution proceeds normally to the next step, which assigns
false to the isMale attribute.
In other words, an alternative can be said to succeed if no errors which specify to try next alternative are
encountered, and can be said to not succeed if such an error is encountered. As soon as one alternative
succeeds, all other alternatives are skipped.
In the example I just went through, the error was generated by the Test Tag step, but usually errors are
caused by steps which are unable to perform their actions. This is most often because steps cannot find a
certain tag or loading of certain content times out, but it could be anything that stops a step from performing
its action.
Executing the example robot in debug mode you will see that the correct values are assigned to the isMale
attribute. True values are indicated by check marks and false values are indicated by the absence thereof.
To give you an even better understanding of how the try step works, let me show a more complex, yet
common, use case. In Design Studio I have this robot which needs to log into a site and extract some data,
which is only available upon login. The page used by the robot is of course the familiar News Magazine
page. The robot is called Login and is available from the examples folder. If you have closed the Projects
View, it can be reopened from the Window menu.
Look at the robot view to get an overview: In the login process, the robot uses save and restore session
in such a manner that the robot logs into the site and saves the session on the first run. Consecutive runs
will then load the saved session instead of performing the login sequence again. At some point the session
expires and the robot will have to log in and save a new session. Most robot executions will thus be able
to restore a session and be able to skip the entire login procedure.
So… we have three different scenarios to test for: either it is the first time the robot executes and there
is no saved session, or there is a saved session which is already logged in, or there is a saved session but
it has expired.
Looking at the robot view, there are two alternative paths for the robot to take, depending on whether it
is able to use the stored session or not. To show each case, let’s try simulating them by clicking through
the robot.
The first time the robot is executed there is no saved session. The robot will first try the topmost alternative
from the try step, but if I try executing the Restore Session step it will fail, since there is no session to
restore. When this step fails, it will cause an error, triggering error handling which is set to “Try Next
Alternative”. The robot will therefore have to execute the second alternative, which follows this lowermost
Documents you may be interested
Documents you may be interested