Académique Documents
Professionnel Documents
Culture Documents
2. CONFIDENTIALITY; OWNERSHIP.
2.1 Title and Ownership. All titles, ownership rights, and copyrights and other intellectual property
rights in the SOFTWARE shall remain in AppPerfect and/or its suppliers. You acknowledge such
ownership and intellectual property rights and will not take any action to jeopardize, limit or interfere
in any manner with AppPerfect's or its suppliers' ownership of or rights with respect to the
SOFTWARE. The SOFTWARE is protected by copyright and other intellectual property laws and by
international treaties. Nothing in this license shall be construed as a grant in or a transfer of any
proprietary rights. This SOFTWARE is licensed for user, not sold.
2.2 Proprietary Information. You agree that the SOFTWARE and all computer code, inventions,
algorithms, know-how and ideas embodied in or by the SOFTWARE and all other business,
technical and financial information You obtain from AppPerfect, whether designated confidential or
not (hereinafter referred to as "Proprietary Information") are the confidential property of AppPerfect.
You also agree that any expression of AppPerfect's findings, analyses, conclusions, opinions,
recommendations, ideas, techniques, know-how, designs, programs, enhancements, SOFTWARE,
and other technical information provided to You by AppPerfect in the course of performing
consulting, training, maintenance or other services related to the SOFTWARE are the Proprietary
Information of AppPerfect and are licensed to You, pursuant to this ASLA.
2.3 Non-Disclosure. You agree to keep the Proprietary Information in a secure place, under access
and use restrictions designed to prevent disclosure of the Proprietary Information to unauthorized
persons and to instruct Your personnel to keep the Proprietary Information confidential.
2.4 Breach. You agree that any disclosure of the Proprietary Information to a Third Party other than
in accordance with the terms of this ASLA constitutes a material breach of this ASLA and will
terminate the license granted by this ASLA.
2.5 Injunctive Relief. You further agree that You will be liable for all damages to AppPerfect that
result from any wrongful disclosure of the Proprietary Information to any Third Party or any breach of
this ASLA. You acknowledge that such wrongful disclosure or breach could cause irreparable injury
that cannot be compensated by monetary damages and that injunctive or other equitable relief may
be appropriate.
3. PRODUCT MAINTENANCE.
You understand and agree that AppPerfect may provide updates to the SOFTWARE from time to
time but AppPerfect shall have no obligation to provide maintenance or updates to You for
SOFTWARE licensed under this ASLA.
4. DISCLAIMER OF WARRANTY AND LIABILITY.
4.1 THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. TO THE
MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, APPPERFECT FURTHER DISCLAIMS
ALL WARRANTIES, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. THE
ENTIRE RISK ARISING OUT OF THE USE OR PERFORMANCE OF THE PRODUCT AND
DOCUMENTATION REMAINS WITH YOU, THE LICENSEE.
4.2 TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
APPPERFECT OR ITS SUPPLIERS BE LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL,
DIRECT, INDIRECT, SPECIAL, PUNITIVE, OR OTHER DAMAGES WHATSOEVER (INCLUDING,
WITHOUT IMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
ARISING OUT OF THE USE OF OR INABILITY TO USE THE PRODUCT OR DOCUMENTATION,
EVEN IF APPPERFECT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
BECAUSE SOME STATES/JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION
OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATION
MAY NOT APPLY TO YOU.
5. TERMINATION.
5.1 Basis for Termination. AppPerfect may terminate this ASLA if You commit a material breach of
this ASLA
5.2 Obligations Upon Termination. Upon termination of this ASLA, You will immediately destroy or
return to AppPerfect all SOFTWARE and Proprietary Information in Your possession.
5.3 Effect of Termination. The following provisions shall survive termination of this ASLA: 2, 4, 5.2,
5.3, and 6.
6. GENERAL TERMS AND CONDITIONS.
6.1 Severability. If any provision of this ASLA is found by any court of competent jurisdiction to be
invalid, then the remaining provisions shall nevertheless remain in full force and effect.
6.2 Choice of Law and Venue. This ASLA shall be governed by and construed under the laws of the
State of California without regard to conflicts of laws or provisions thereof, and without regard to the
United Nations Convention on Contracts for the International Sale of Goods. You agree that the
federal and state courts within Santa Clara County, California shall have exclusive jurisdiction to
adjudicate any dispute arising out of this ASLA.
6.3 Complete Agreement. This ASLA is the complete and exclusive statement of the mutual
understanding of the parties and that it supersedes and cancels all previous written and oral
agreements and communications relating to the subject matter of this ASLA. AppPerfect disclaims
all preprinted terms of any purchase order or other written instrument submitted by You.
6.4 No Modification. You agree that this ASLA can be modified only by a written agreement duly
executed by persons authorized to execute agreements on behalf of the parties hereto.
6.5 No Waiver. You agree that any failure or delay to exercise or any partial exercise of any right,
power, or privilege hereunder by AppPerfect shall not operate as a waiver.
6.6 Attorneys' Fees. If any legal action is necessary to enforce the terms of this ASLA, the prevailing
party shall be entitled to reasonable attorneys' fees and costs in addition to any other relief to which
that party may be entitled.
6.7 Export Laws. You shall comply with all then current export laws and regulations of the U.S.
Government and the government of the country in which You receive delivery of the SOFTWARE,
which pertain to the SOFTWARE. You may not install the SOFTWARE outside of the country to
which the SOFTWARE was initially shipped.
7. U.S. GOVERNMENT RESTRICTED RIGHTS.
The SOFTWARE, including related documentation, is provided with Restricted Rights. The use,
duplication or disclosure by the U.S. Government is subject to restrictions as set forth in this ASLA,
and in the applicable provisions of subparagraph (c)(1)(ii) of the Rights in Technical Data and
Computer Software clause DFARS 252.227-7013, or subparagraphs (c)(1) and (2) of the
Commercial Computer Software - Restricted Rights at 48 CFR 52.227-19. The manufacturer is
AppPerfect Corporation, 11651 Timber Spring Court, Cupertino, CA 95014.
Should you have any questions concerning this ASLA, or if You desire to contact AppPerfect for any
reason, please write:
AppPerfect Corporation, 11651 Timber Spring Court, Cupertino, CA 95014
Acknowledgement of Third Party Software
This AppPerfect software contains certain third party software as listed below which are
acknowledged here. These are open source software for which you may obtain source and binaries
from the URL listed next to the software.
HtmlUnit (http://htmlunit.sourceforge.net/)
Impression Math Expression Java parser (http://impression.sourceforge.net/)
iText PDF Library (http://sourceforge.net/projects/itext/)
JavaAssist (http://www.jboss.org/products/javassist)
Java Communications API (http://java.sun.com/products/javacomm/)
jregex - regular expressions for Java (http://sourceforge.net/projects/jregex)
JUnit (http://www.junit.org/index.html)
JCraft JSch (http://www.jcraft.com/jsch/index.html)
Quartz Scheduler (http://www.quartzscheduler.org/)
Remote Tea ONC/RPC for Java (http://www.plt.rwth-aachen.de/ks/english/remotetea.html)
Rhino (http://www.mozilla.org/rhino/)
SmsJ SMS library for the Java platform (http://sourceforge.net/projects/smsj/)
Spring Framework (http://www.springframework.org)
StrutsTestCase for JUnit (http://strutstestcase.sourceforge.net/)
Subclipse plug-in for Subversion (http://subclipse.tigris.org/)
Subversion Server (http://subversion.tigris.org/)
Introduction
The Internet has become the de facto standard means by which most people interact with a vast
majority of software application. This move away from desktop computing to server-side computing
with HTML as the front-end technology has created a whole new class of applications to be built and
delivered to customers.
However, it has also created a new set of challenges in terms of developing and testing these
applications. It is now assumed your customer may be sitting thousands of miles away and working
in a language you are not familiar with.
A second aspect of modern software development methodology is to start testing the software early
and often. Most software developers do not follow the cascading model of development whereby
testing only starts after development ends. Further, developers are being increasingly encouraged
to create vast arrays of unit tests to ensure quality.
AppPerfect Web Test is a comprehensive Web application testing solution that provides all the
features you need, to ensure the reliability of your business-critical applications.
Technologies : AppPerfect Web Test supports testing applications based on .NET, ASP,
Servlets/JSP, CGI, SSL and most other server-side Web technologies. It also supports
advanced Web technologies such as AJAX, Flash and Java Applets.
Browser recording: You can use the browser recording facility to create the tests as you
would normally work with your application. There is no need to learn any proprietary scripting
language. You can then edit and run the test fast and easily. Recording supports JavaScript
dialogs, File Chooser dialogs, Menus, toolbar etc apart from normal HTML elements.
Recording is Component-based and not co-ordinate based allowing to replay test even when
browser is moved or element position changes. Web Test supports recording from multiple
instances of browser simultaneously.
Multiple Browsers Supported: Recording/Replaying is supported on most commonly used
browsers like Internet Explorer, Mozilla Firefox and Safari.
UI based editing of tests: The UI is easy to use and allows you to edit your existing test as
well as add new URLs and parameters to the test. You can quickly modify your tests and
easily build on the Test Cases as and when additional functionality is added to your products
Reduced testing time: As the tests for AppPerfect Web Test are fully automated, you can
save a substantial amount of time and resources that would be spent on trying to test the
system manually. Also errors that might be overlooked during manual testing are caught by
the AppPerfect Web Test and there is no bias in the reporting of errors. AppPerfect Web
Test helps you improve the quality of your Web Applications and drastically reduces the time
it would take to get your product out into the market.
Scripting Support: For advanced user AppPerfect Web Test provides scripting language
support. The scripting language used is simple java script, users can view/edit the test using
script editor provided. Users can customize a test as much as they want using java script.
Parameterize Tests: In real world scenario, for any Web-based application, the pages that
are requested are not all static. In fact, most of the pages accept some parameters as input
and then correspondingly show the appropriate customized content. Parameterize tests feed
these parameters automatically to the request and thus help simulate a more realistic usage
environment. AppPerfect can read values from text files, databases etc.
Response Validation: You can validate the responses received for a URL request with
AppPerfect Web Test. You can customize what constitutes a valid or invalid response for an
URL request.
Support for basic authentication, cookies, SSL: With the AppPerfect Web Test, you can
test URLs that require basic authentication as well as those using HTTPS by allowing the
configuration of the SSL Provider. It also handles the sending of cookies with the appropriate
requests and supports URL rewriting if your application uses it. Two way SSL authentication
is also supported.
Execution without launching browser: AppPerfect Web Test provides support for running
tests without launching browser. Events on all HTML elements is supported in this mode.
Limitation of this mode is that it cannot run window events like events on Applets, Flash,
javascript dialogs, Toolbar buttons, Menu bar etc.
Remote Execution of tests with Central Controller: AppPerfect Web Test provides
support for creation of test on one machine and execution of same remotely on multiple
machines simultaneously. This way you can run functional test from multiple machines and
can control the functional test from one central machine. At the end of execution application
will present the functional testing result of entire functional test as well as individual
machines. This requires AppPerfect Web Test to be installed on remote machines.
Object Spy: AppPerfect Web Test provides functionality to Spy on any HTML element in the
page and fetch its properties. This makes it easier to add any new HTML element to your
existing functional test and build on the Test Cases as and when additional functionality is
added to your product
Importing of tests / groups: AppPerfect Web Test can import a test that has been created
using the AppPerfect Load Test. This makes it easy for a user to create a test instead of
replicating the effort of creating a test. One can also import already recorded groups from
one test to another.
Informative reports: The application provides reports that help you pin point failure points of
the test. These reports are available through the UI and can be exported into different
formats: HTML, PDF, CSV, XLS and XML.
Trend Analysis: AppPerfect Test Manager provides lot of trend reports for trend analysis of
your application. This utility takes multiple result files and generates trend charts and reports
based on the data found. You need AppPerfect Test Manager for trend analysis
Scheduling of tests: You can schedule your tests with AppPerfect Test Manager. You do
not have to be physically present to start the test. The whole process is automated so you
can schedule a test to run in the night and have a look at the results the next day and then
correct any errors found by the test. You need AppPerfect Test Manager for scheduling tests.
Notification of results: You can configure AppPerfect project to notify results using Email or
custom notification mechanism. In case of Email notification you can specify whether you
want results as attachment and AppPerfect will export the results as HTML file and send the
same as attachment with the mail.
IDE Integration: AppPerfect Web Test supports IDE integration with most commonly used
IDEs. This enhances ease-of-use and productivity. Currently supported IDEs are Eclipse,
NetBeans, IntelliJ, JBuilder, JDeveloper, BEA Workshop, IBM RAD, IBM Websphere Studio
etc,.
ANT Integration and Command line execution: AppPerfect Web Test supports ANT
Integration and command line execution so you can functional test your web application by
invoking product by running ANT script or by running bat/sh file.
integrated with popular Java IDEs as well as the project's build process.
Requirements Manager: This module is used to create requirement specifications around which
your tests will be designed and executed. Functional, business, performance, technical and usability
requirements should be defined here to ensure the tests cover all defined criteria.
Test Manager: Once tests have been designed, the Test Manager can be used to manage the
execution of your tests. Automatically running tests on a specific schedule, notification of test
results, saving of test results, etc. can be defined in this module.
Results Manager: Once results for your various tests have run a few iterations, the Results
Manager can be used to manage the archived results. Trend Analysis of multiple results to detect
key quality trends is a key feature of this module. Storage management can also be performed via
this module.
Issues Manager: As tests are run, issues such as defects, enhancements, modifications, etc. will
occur. This module can be used to create and track such issues. This module is designed as a lightweight issues manager that seamlessly integrates with the rest of the server and is not intended to
replace full-featured issues management system.
License Manager: Floating/site licenses are managed using this module. This module acts as the
central manager for issuing and reclaiming floating licenses for the AppPerfect products.
Getting Started
This chapter covers information relating to the minimum system requirements, getting product
support, starting the AppPerfect Web Test, selecting the type of project to be created and overview
of how to access the documentation provided with the AppPerfect Web Test and also how to access
Help while using the AppPerfect Web Test.
RAM: 512 MB
CPU: 1 GHz
NOTES: The preferred screen area or resolution for the AppPerfect products is 1024 x 768 pixels.
Startup Instructions
You can start the AppPerfect Web Test in any of the following ways:
For Windows
Shortcut:
Follow this path:
Start -> Programs -> AppPerfect Web Test x.x.x -> AppPerfect Web Test
Installation Folder:
Follow these steps:
1. You have to browse to the location where you have installed AppPerfect Web Test
2. From the %WebTest_Home%\eclipse folder, run WebTest.exe
For Other Operating Systems
Shortcut:
1. In the path provided while installing, you can see the AppPerfect_WebTest_x.x.x shortcuts
folder.
2. An executable link file: AppPerfect_WebTest_x.x.x is provided there. Run it.
Installation Folder:
1. Go to AppPerfect Web Test home folder
2. Run the file $WebTestHome/eclipse/WebTest
Inside AppPerfect Web Test
You can read a brief overview of AppPerfect Web Test in the Welcome screen. Now you can start
using AppPerfect Web Test to test your Web applications.
Supported Products
AppPerfect Web Test supports :
Databases: All databases that have JDBC drivers and support JDBC specifications
AppServers: Apache Tomcat 4.x/5.x; BEA WebLogic 7.x/8.x/9.x; IBM WebSphere 5.x/6.x;
JBoss 3.x/4.x; Macromedia JRun 4x, Resin2.x/3.x, Orion 2.x, OracleAS 10g, Jetty4.x/5.x,
SunOne 7.x/8.x
Web Servers: Apache HTTP Server 1.3.x/2.0.x, Microsoft IIS 5.0/6.0
IDE: Eclipse 2.1.x/3.0, NetBeans 4.0/4.1/5.0, IBM WSAD 5.1.x, IBM RAD 6.0, IntelliJ
3.0.5/4.0/4.5/5.0, JBuilder 9.x/10.x/2005/2007, JDeveloper 9.x/10.x
in Linux.
You can reach to a specific topic, by finding it in the contents (Table of Contents) in the left-handside frame.
The documentation is also available in PDF format online and can be accessed as follows:
Using the shortcut: Click Start ->Programs -> AppPerfect Web Test x.x.x -> Documentation
and Examples > Print Manuals in Windows or /AppPerfect_WebTest_x.x.x/Documentation and
Examples/Print Manuals in Linux.
To start with, it is recommended that you read through all the topics following the sequence of the
contents for a better understanding of the product and the features it provides. Glossary provides
explainations of commonly used terms in AppPerfect Web Test.
Project
The 'Project' panel requests information regarding your project's name and its location on your
system. By Default, all the projects are stored in the 'workspace' folder of the AppPerfect installation
directory.
NOTE: If you provide a project name that already exists, AppPerfect will over-write the contents of
the existing project's folder.
Notification Settings
AppPerfect can send you customized notifications of your test results. This feature is very useful in
cases where you want to schedule AppPerfect to run tests and do not want to wait for the results.
For example, you can receive the results in your mailbox with (optional) HTML reports attached. You
can choose to be notified on test completion or only if the test fails.
The following settings are required for the Notifications feature:
1. Send Notification on: Project completion or Project failure, as is your requirement.
2. Notification Message: Click the button to create your own customized notification message
using the variables relevant to your AppPerfect product.
3. Email / Custom Notification Settings: Provide the required email or custom notification settings
where you want application to send notification.
NOTE: If you opt for Notifications you must configure notification settings in AppPerfect Test
Manager application and you must configure Test Manager information in tools > Options
> Server Connections dialog in AppPerfect product, otherwise, the Notifications feature
will not work.
Project Properties
Once a new project is defined using the New Project wizard, certain additional settings specific to
Web Test are needed to configure and run your test. This dialog box can also be accessed from the
menu: Project -> Properties Editor...
You can configure following settings :
Run Settings
Run Settings
Record Think Time: At times, users find it necessary to record the time duration that occurred
between a response is received and the next user input. An example would be to record the time
taken between a page received and when the user clicks on a link on the received page. This
duration is called Think Time. The working assumption is after a page is received, it typically takes a
user some time to read and process the information on that page. AppPerfect can record this think
time while recording and use the same think time while replaying.
Default Think Time: If you do not wish to record think time, you can set a default think time
for all requests. By default, this value is set to 1 second.
Customize Recording: AppPerfect is set to record the most commonly used elements and events
of your Web page. However, if you find certain elements or events of your Web pages are not being
recorded, click the Customize Recording... button and ensure those elements/events are configured
correctly. If necessary, you can also define your own elements and events. Refer to System
Configuration for more details.
Number of iterations: Specify how many iterations of the recorded test AppPerfect should replay.
This is typically used when you want to test multiple values of parameters. You can run test for
either fixed number of iterations or can run it for iterations calculated based on combination of
parameters provided.
Timeout (sec): Specify for how much time AppPerfect should keep retrying for successful replaying
of an URL or element before marking it as failure. This is important for cases where URL navigation
or application initialisation takes long time. Default recorded timeout period is 30 seconds. You can
configure the timeout period here and select the option to use this timeout value for all tasks in the
test.
Treat timed out tasks as failed tasks Select this option if you want application to mark timed out
task as failed task in the results.
Ignore Think Time during replaying: By default application ignores the think time between each of
the step while replaying the test. In case your application takes long time to initialize or takes long
time to navigate or load the page, you can uncheck this option, So that application waits for
specified think time before executing each of the step in the test,
Save successful response details on disk: By default application just saves the failed responses
on disk. In case you need to save all responses during execution then select this option. HTML
source of the response will be saved on disk in this case. Responses will be saved in replay folder
at project location
Save response page as image and show these images in result views: By default application
saves the responses as HTML source, but many a times these html pages may not display data fine
when offline or in case data is generated dynamically or on execution of some dynamic scripts. In
such cases you may select to save response as image, where application takes screenshot of the
page and shows same in the result views. This is helpful in getting the exact view of the page during
replaying.
Clear cookies: On occasion, you may want to clear cookies before replaying test to avoid any preconfigured sessions, in such cases, you can use this option. This option is valid only in case
browser used is Internet Explorer.
Clear History: On occasion, you may want to clear history before replaying test, in such cases, you
can use this option. This option is valid only in case browser used is Internet Explorer.
Clear Cache: On occasion, you may want to clear cache to download new images, clear stored
values for fields etc., in such cases, you can use this option. This option is valid only in case
browser used is Internet Explorer.
System Configuration
The Tools -> Options dialog box lets you specify a number of important properties to control Web
Test behavior. Properties configured here are applied to all the projects in the test. Following is a
description of the various tabs and properties found in them.
AppPerfect
Custom Certificates
Web Test
Licenses
Log Settings
Proxy Settings
Server Connection
AppPerfect
General
Number of Recent Project Files: Specify the number of project files to show in the most recently
used menu list. The default is 5.
Number of Recent Result Files: Specify the number of result files to show in the most Recently
used menu list. The default is 5.
Highlight Row/node on mouse over:This setting is for highlighting the current row you are
browsing or the current node you are visiting in AppPerfect product.
Save Result: Define your results-save strategy here. You can configure to save result for each
project run automatically or to save just last run of the project. Default value is to not save result
automatically.
User Name: Shows the name of the user configured in AppPerfect Test Manager. Multiple users
can be configured with AppPerfect Test Manager and each client AppPerfect product can use
unique user name to submit results/ projects to Test Manager. This user name is used as identifier
and is helpful in generating user based reports in Test Manager. In case connection to Test
Manager is not configured Or if there is only single user configured in Test Manager then this field is
un-editable.
Font Settings
You can set your own font for AppPerfect Web Test.
Update Schedule
Application can be configured to check for new updates/release of the AppPerfect product. On
finding one application notifies the user about the availability of same. Keeping this feature enabled
ensures that you are using latest version of the product.
JDK Settings
Specify your JDK's name and path here. AppPerfect will use the default JDK specified at the time of
installation. You may want to use other JDKs for your applications and those can be defined and
used from here.
DB Connections
You can configure Database related properties like Database name, Connection URL, JDBC driver,
User Name, password etc. here. This is useful in case you need to fetch values from database to
parameterize your test. Database configuration is also required in case you need to add Database
validation in test.
Custom Certificates
In case your application uses a custom SSL certificate (i.e. certificate not provided by Verisign or
Thawte), then either you need to make that custom certificate trusted by the JVM running
AppPerfect product or you may select the option to "Accept Self-signed or untrusted custom SSL
certificates."
To make the custom certificate trusted by the JVM running AppPerfect product, you need to add the
SSL certificate here. AppPerfect uses this certificate when running your test. Certificates provided
by Verisign or Thawte are automatically trusted by the "trust file" within the JVM. All other
certificates are considered custom SSL certificates. If you are using a Custom certificate, you will
need to import that certificate into AppPerfect. In case you don't have the certificate file, open your
HTTPS link in a browser and then click on the "lock" icon. This will pop up a dialog box with
"Certificate" title & General tab selected. Go to Details tab and select "Copy to File..." option.
Proceed with the wizard. On Export file format select "Base-64 encoded..." radio button. Save it to
some temporary location and import this certificate file. Please note that you will be required to
restart AppPerfect product after registering custom certificate.
Web Test
General Settings
If error occurs during test run: Select the option that best suits your requirement for errors. You
can configure to stop test run, ignore error and continue with next task or group, you can also
configure to prompt for user action in case error occurs and can also retry the execution of the
erroneous task during runtime.
Auto Detect mouse-over events on elements having mouse-over event handlers: By default,
application does not record mouse-over events on elements which does not have mouse-over event
selected. If you have a web page which uses mouse-over event to do certain action, for example, in
DHTML menu bars, where on mouse-over, menu opens into sub-menus, then you should select this
check box. If this checkbox is selected then during recording application tries to find the mouse over
event handlers on the fly and records the mouse over event for the element which has mouse over
event handler associated with it.
Use low level apis to replay mouse events on HTML elements: This option is valid only in case
you are using Internet Explorer browser on Windows. By default application uses Web HTML apis to
replay mouse events, but in some cases you may have underlying event handlers execute only if
mouse cursor is hovered over the target element, like opening of a drop down menu or validation of
form on mousedown/mouseup etc. In such cases you should select this option for replaying mouse
events on HTML elements. In this case application uses Low level mouse events during execution
of events and moves cursor to centre of target HTML element while replaying.
Use Accessibility to record window events: Events on window elements can be recorded in two
ways, One by using Window's accessibility framework and recording accessible path to the UI
element and other by using standard window enumeration to find the window component. Windows
accessiblity provides more control over the nested UI elements in the UI heirarchy and this option
should be used for recording on flash/flex or any custom controls. But this requires that the target
custom control should implement the standard Accessible framework. All the window controls
implements the accessible framework. This option should not be used in case the UI elements in
your application changes its position in the UI heirarchy resulting in change of accessible path
during each run.
Save all frames: By default application only saves those frames or pages on which event is
recorded and does not save all the containing frames in the target web page. In case you need
application to save all the subframes in your application then select this option. Useful in case you
need to add validation on subframes in your application.
Perform strict attributes comparision to find element during replaying: During replaying
application uses a search algorithm to find the desired html element on the target web page. By
default application first tries to find the element at recorded element position also know as
"tagIndex" for ex. 5th link or 6th input textbox. It then compares the recorded attributes/properties of
the element against the one it finds from element at recorded tag index. Now if some of the
attributes does not match then application by default tries to find the matching element with
maximum number of matching attributes in the vicinity of the recorded tag position. This is to
automatically handle cases where attributes of element changes dynamically during each run or
where element position changes during each run. To change this default behaviour of searching
element in the web page you can configure to "Perform strict attributes comparision to find element
during replaying", where application will find the element only at recorded tag position and will
strictly compare all the attributes of the element and in case it fails to match any attribute will report
it as a failure. You should use this option in case you have static Web application where attributes
and tag position of elements are not changing dynamically.
Record drag/drop event if mouse is dragged by more than N pixel: By default application
records drag/drop event for window components only if mouse is dragged by more then 10 pixels. In
case you need to increase/decrease this range, same can be edited here.
Dynamically changing attributes:
Elements on your Web page may have certain attributes that change dynamically for certain events,
for example, the 'src' attribute of the 'img' element changing dynamically on mouseover. In this case,
you should add this attribute to the list of 'Dynamically changing attributes' because otherwise the
replayed test is likely to fail as there will be a mismatch in the recorded and replayed element. 'Src'
and 'oSrc' attributes are already added to this list by default. You can add more by clicking the add
button. All the attributes added to this list will be marked as ignored while recording the test.
Web Elements
All the Web or HTML elements that can be recorded by AppPerfect Web Test are configured here.
You can select the ones you need for testing your web application. You can also add new elements
and modify/delete the existing ones from here. AppPerfect is set to record the most commonly used
elements and events on your Web page. However, if you find certain elements or events on your
Web pages are not getting recorded, then first check if you have that specific HTML element
configured here and has the corresponding event enabled for same. If you find that element is not
present then you should add new HTML element having the same tag name as the html element
you need to record and enable the events you need it to listen to. You can either check the HTML
source of your web page to find the Tag name of the element or can use AppPerfect's Object Spy
feature to find the tag name of the element.
Window Elements
This list of elements is valid only in case you are using Internet Explorer browser on Windows to
record the test. All the Window elements that can be recorded by AppPerfect Web Test can be
configured here. You can select the ones you need for testing custom control like flash/flex/
javascript dialogs/Applet etc on your web application. You can also add new window elements and
modify/delete the existing ones from here. AppPerfect is set to record the most commonly used
window elements and events on your Web page including applets/flash/flex/javascript dialogs/
Menus/Toolsbar etc.. However, if you find certain elements or events on your Web pages are not
getting recorded, then first check if you have that specific Window element configured here and has
the corresponding event enabled for same. If you find that window element is not present then you
should add new Window element having the same native class name as the window element you
need to record and enable the events you need it to listen to. You can find the native window class
name of the window element by using AppPerfect's Object Spy feature.
Licenses
License related settings are done here. You can configure license for either single client machine or
can configure the product to pick the license from Floating license server in case you have
purchased Floating license. Floating licenses are managed using License Manager in AppPerfect
Test Manager.
Log Settings
AppPerfect maintains logs of fatal exceptions for all the products. You can change this setting here
to log all messages. This option is very useful for debugging purposes. It is recommended that you
use this feature in case you are facing any issues with the product and send us the log files. By
default log files are saved at: <AppPerfect_Home>/logs. You can configure to change the log path
and save logs at different location. Application can also log the values from the test script. For each
log statement in test script you will find output getting logged in script_log.txt. The script log can be
used to check the values getting used during parameterized test.
Proxy Settings
General Settings
In case you are using Internet Explorer as the browser to record and replay and are not recording
script for AppPerfect Load Test simultaneously then you do not need to configure these settings.
Application provide the feature to simultaneously record script for AppPerfect Load Test while you
are recording your Web Test. Also in case you are using Mozilla Firefox or Safari on MAC OSx or
any other browser then you require to configure your proxy server settings to properly record and
replay test. Refer to Proxy Recording chapter for more details.
AppPerfect Proxy Server Settings
AppPerfect starts its local proxy server and sets same in target browser. By default Application uses
localhost and port 8690 to start the local proxy server. In case default port is in use by some other
application you can change it to some other value here.
AppPerfect can automatically launch and configure proxy settings in your web browser wherever
possible. If you want to do that yourself, deselect the checkbox 'Automatically launch and
configure browser for recording.'
Target Proxy Server Settings
These settings are required if you do not have a direct connection to the Internet and you normally
use a proxy server to access your application. The browser's current proxy settings have to be
specified here. By default AppPerfect assumes a direct connection to the Internet.
Filter Settings
These settings are required in case of Proxy Recording. All the patterns which are marked as
excluded here are not recorded while recording. Application by default adds common update
services installed on machine which are not part of your application and these requests should be
dropped while recording tests. You can extend this list to add more patterns which you would like to
exclude during recording.
Server Connection
Test Manager Settings
AppPerfect Test Manager settings are done here. AppPerfect Test Manager provides functionality of
requirement, project, results and issues management. It allows to schedule various project
executions, view results, export them to various formats, add/manage test requirements and add/
manage issues in the product. AppPerfect Test Manager by default runs on port 8744 and can be
accessed as http://HOST_NAME:8744/AppTestManager.
Product related service settings are configured here. Each Web Test product also installs a product
service which listens to requests from other Web Test product installations on remote machines
while performing remote execution. This service by default runs on port 8854 and can be accessed
as http://HOST_NAME:8854/AppService
Repository Settings
AppPerfect Repository Settings is required to share AppPerfect projects across the team.
AppPerfect provides support for Subversion(SVN) server for sharing projects across team.
AppPerfect Repository server by default runs on port 8747 and can be accessed as svn://
HOST_NAME:8747/AppRepository in case repository is created with "AppRepository" as the root
folder. For complete details on configuration of Team or Repository Server refer to Team Server
Configuration
Proxy Recording
AppPerfect starts a local proxy server at localhost:8690 by default and sets the same in browser.
For proxy recording to work properly you should have default port 8690 free for use and also confirm
that firewall is not blocking that port. Once recording is over AppPerfect takes care of changing the
connection settings back to normal. Automatic proxy setting is supported for Internet Explorer,
Mozilla Firefox and Safari browser on Windows. For Safari browser on MAC OSx you need to
configure the proxy manually. Refer to Manual Proxy Configuration for more details on this. In case
your application already uses a proxy you need to configure same at Tools -> Options -> Proxy
Settings -> Target Proxy Server Settings. Each request from browser is passed to the local proxy
server which in turn sends the same to the target proxy server or directly to target server in case
there is direct connection to internet. The flow is reverse while receiving the response. AppPerfect's
local proxy server sits in middle and reads the requests/response sent to and fro between browser
and target server. AppPerfect uses Proxy server for recording in following cases :
Recording Load Test / Generating Test Cases with Java Unit Test / Recording memory leak
scenarios with Java Profiler
Recording/Replaying Web Test with non IE browsers like Mozilla Firefox Or Apple Safari
Recording Load Test / Generating Test Cases with Java Unit Test /
Recording memory leak scenarios with Java Profiler
While Recording Load Test OR While Generating Test Cases with Java Unit Test for web
application OR While recording memory leak scenarios for web application using Java Profiler,
application records all the http/https requests sent to target server by browser. Application takes
care of recording request details, parameters, headers, response code etc and also saves the
response recieved for each request in recorded folder at project location. All the request patterns
which are configured at Tools -> Options -> Proxy Settings -> Filter settings are excluded from
recording. Application records the requests as Main tasks and sub tasks. All the images/js/css etc in
page are recorded as sub tasks of main task.
In case you are recording for an Applet application and the applet sends the http requests to target
server, then these requests are not passed to proxy by default and hence are not recorded. For
applet to send requests to the proxy server,you need to set few System properties (http.proxyHost,
http.proxyPort, http.proxySet) in your applet application. The http.proxyHost should be set to
"localhost", http.proxyPort should be set to 8690 and http.proxySet should be set to true, so that
applets sends the http request to local proxy server started by AppPerfect.
use proxy. But in case you are using Mozilla Firefox or Apple Safari, AppPerfect needs proxy for
recording/replaying Web Test. While recording Web Test for Firefox or Safari or any non-IE browser,
local proxy server injects each response with recorder javascript. This recorder javascript takes care
of recording the events on web application. Same is true while replaying test with Firefox and Safari
where response is injected with replayer javascript. In either case it requires the recorder/replayer
javascript to load completely in browser along with the response. In case there are script errors in
page or if recorder/replayer script could not load completely in browser, in such cases recording/
replaying will not work properly for non-IE browsers. For recording/replaying Web Test on Non-IE
browsers the browsers should have support for javascript.
Open Internet Explorer browser and Select Tools -> Internet Options.. menu option. Select
the Connections tab and click the LAN Settings button in case you are using LAN for
connection to internet. In case you are using Dial-up or VPN you need to click the Settings
button under Dial-up and VPN settings. This will launch the proxy server settings dialog.
Select the checkbox to "Use Proxy server..." and Provide proxy server address as localhost
and proxy port as 8690. the option "Bypass proxy for local addresses" must be turned OFF
Click on Advanced button and make sure that "Do not use proxy server for..." must not
contain localhost/127.0.0.1 or your target server address
Open Firefox browser and Select Tools -> Options menu option. Select the Advanced Tab
and then Network Tab in the Options dialog. Click Connection Settings...button. This will
launch the Connection settings dialog.
Select the radio button for "Manual Proxy Configuration" and provide proxy server address
as localhost and proxy port as 8690. Select the checkbox to "Use this proxy server for all
protocols"
The "No proxy for" option must not contain "localhost" or "127.0.0.1" or your target server
address
Go to MAC OSx System Preferences -> Proxy Settings and set proxy settings for HTTP and
Secure Web (HTTPS) protocols. Set proxy settings as 127.0.0.1 and 8690
The "No proxy for" option must not contain "localhost" or "127.0.0.1" or your target server
address
Browser Recording
To start recording a test, click Project -> Record test... from the menubar. This will launch the
AppPerfect Recorder dialog. Ensure the browser is correctly configured at Tools -> Options...->
Browsers, JDKs & DBs. Following settings can be configured in Recorder dialog before starting
recording :
Browser
You can select the browser for recording from the list of configured browsers. AppPerfect Web Test
records Web test in either of following ways depending on the browser used:
Using COM technology (if the browser is Internet Explorer v5.5 and higher AND operating
system is Windows)
Using Proxy Recording in case of Non-IE browsers like Firefox and Safari
Group
Each project can have multiple groups based on functionality you want to record. Select the group in
which you need to record the test from the Group dropdown. Application will record the events in the
selected group.
Starting URL:
Provide the starting url of your application here. Application will take care of launching the browser
Transaction:
Transactions are used in case you are simultaneously recording Load Test script. You can record
transactions to get details of response time during execution for set/group of tasks. During recording
you can start/stop transaction to record transactions.
Authentication
In case your application requires Authentication then same should be configured here. Refer to
Authentication Schemes for details on various authentication mechanisms that can be configured
with AppPerfect.
Filters
In case Load Test script is simultaneously recorded then application will exclude or include load test
tasks in recording based on extensions specified in filters (example *.gif, *.jpg)
Replaying a Test
Project Summary
Machine Summary
Iteration Summary
Group Summary
Browser Summary
URL Summary
Event Summary
Replaying a Test
You can replay test using one of the following option:
When you replay a test, application launches the default browser configured at Tools -> Options...->
Browsers, JDKs & DBs and first recorded URL is fired. The progress of the Web Test can be seen in
the Status tab where the currently executing URL/Event is highlighted. Application replays each step
in the browser in the sequence it was recorded.
While the test is replaying, you can pause it for a while by clicking Pause. You can stop the test
anytime while replaying by clicking Stop button..
When there are multiple groups in the test, there are a few things to note:
Once the test completes replaying, results of the execution can be seen in the Results tab.
Project level: You can see the Project Summary which is an overall result for the project
including a combined view of all the machines on which test is executed.
Machine level: In case you are executing test on multiple machines simultaneously
then you can see summary of execution of project on each machine. When running
test on single machine application shows machine as localhost.
Iteration level: You can see the Iteration Summary which shows the results
for the selected Iteration within the project.
Group level: You can see the Group Summary which shows the
results for the selected Group within an Iteration.
Browser level: This is the result for the selected Browser within
the selected Group within an Iteration.
URL level : This is the result for the selected URL within
the selected Browser .. group and iteration.
Project Summary
Project Summary shows the overall results of the test. The right hand side frame shows following :
1. Machine Summary: This section graphically represents the status of all the Machines on
which the project was executed. A table also shows the same status data in a table, which is
used to draw the pie-chart.
2. Machine Replay Status Table: This section shows details of the Machines. All the
Machines on which the project has run, are shown in this table along with their status
(whether failed or succeeded or Not Played or Stopped) and the Machine names are
hyperlinked to the details of that Machine.
Machine Summary
Machine Summary shows the overall results of execution of test on single machine. The right hand
side frame shows following :
1. Iteration Summary: This section graphically represents the status of all the Iterations for
which the project has run. A table also shows the same status data in a table, which is used
to draw the pie-chart.
2. Iteration Replay Status Table: This section shows details of the Iterations. All the Iterations
for which the project has run, are shown in this table along with their status (whether failed or
succeeded or Not Played or Stopped) and the Iteration names are hyperlinked to the details
of that Iteration.
Iteration Summary
The Iteration Summary shows results for that iteration in terms of the success or failure status of the
groups replayed within the iteration. The right hand side frame shows following:
1. Group Summary: A pie chart shows the success or failure status of Groups in the selected
Iteration. A table accompanies the pie chart.
2. Group Replay Status Table: This table lists the groups in the iteration. You can click a
group name to view its detailed status - the Group Summary.
Group Summary
The Group Summary shows results for the selected Group. The right hand side frame shows
following:
1. Group Summary: This section has two pie charts. The URL chart shows the status of the
URLs replayed in this group and the Events Chart shows the status of the Events within the
URLs of this group.
2. Browser Replay Status table: This table lists the Browsers with their status. You can click a
browser Title to access its details - the Browser Summary.
Browser Summary
The Browser Summary shows results for the selected Browser. The right hand side frame shows
following:
1. URL Replay Status table: This table lists the URLs with their status. You can click a URL
Title to access its details - the URL results.
2. Web Browser Control: This control shows the page loaded in browser during replaying
URL Summary
The URL Summary shows results for the selected URL. The right hand side frame shows following
tabs:
1. Status tab: This tab shows details of the URL that was replayed including its Start and End
time, its status - successful or failed and reason for failure if failed.
2. URL_Event tab: This tab lists all the Events/Subframes under the URL with status for each.
You can click the event/subframe to see its details.
3. Validations tab: If you have validations configured for this URL, you can see the results of
the same here. This view will show the validation tree for each type of validation along with
the status (Successful or Failed). In case of failed validations you can click on individual
Page/Element/Text/Date Validation etc to check its furthur details.
4. Web Browser Control: The web control at bottom shows the page saved during replaying
Event Summary
The Event Summary shows results for the selected event. The right hand side frame shows
following:
1. Status tab: This tab shows details of the Event that was replayed including its status successful or failed and reason for failure if failed.
2. Web Browser Control: The web control at bottom shows the page saved during replaying
Auto-Updating a Test
You can automatically update complete test or just a selected group. To auto-update a test, first
open it in Web Test.
Toolbar:You can auto update a test by clicking the Auto-Update Test button from the
toolbar..
Menu option: From the menu bar you can auto update a test like this: Project -> AutoUpdate Test
When you auto-update a test, application launches the default browser configured at Tools ->
Options...-> Browsers, JDKs & DBs and first recorded URL is fired. Now Web Test keep replacing
the new response pages with the recorded ones. To automatically update the tag index of web
element, Web Test tries to find the element on new page using the recorded attributes. In case it
finds the element, it replaces the older tag index with the new tag index and continues by playing
event on that element. In case AppPerfect Web Test is not able to find the element with matching
attributes, you will be prompted to do the corresponding event manually, so that AppPerfect can
continue with next element or page. In this case, you will need to manually update the tag index and
other attributes for this element using the Editor tab once the Auto-Update is over. To manually
update the elements which were not updated by AppPerfect, select the concerned element in the
Editor tab, and on the right hand side Details tab, click on Object Spy.. button. Refer to Object Spy
section on how you can spy the element and import its attributes.
While the test is auto-updating, you can pause it for a while by clicking Pause. You can stop the
auto-update anytime by clicking Stop button..
When there are multiple groups in the test, there are a few things to note:
You can also select the group in the Editor tree and right click and select "Auto-Update
Object Spy
AppPerfect Web Test provides support for Object Spy feature where you can spy on any web or
window element in the page and fetch its attributes/properties. Object Spy is useful while manually
updating or adding new element to the existing test script and is also useful while identifying and
adding new Web or Windows Element to list of supported elements during System Configuration.
In case you are using Internet Explorer you need to open your application manually with Internet
Explorer browser, in case you are using Safari or Firefox, application launches the browser with
starting URL in your test.
Select the menu option Project -> Object Spy.. It will launch a toolbar with option to Start spy. Click
on start spy button and now click on the Web or window element which you need to spy in your
application. It should highlight the element in page with green rectangle. At this point you can stop
spy and view the element's properties/attributes.
In case you find that certain events in the test are not getting recorded and you need to configure
and add new Web or Windows Element to the list of supported elements at Tools -> Options -> Web
Test -> Web/Window Elements, Check out the tag name/native class attribute. Once you identify the
tag / native class of element you can add same to list of supported elements at Tools -> Options ->
Web Test -> Web/Window Elements. Once you add the element to the list of supported elements
and configure the required events for same you should be able to record events on it fine.
Object Spy is also available while adding new element/event to the test manually. To add new event
select the URL node in the Editor tree for which you need to add new Event. Right click and select
the option to Add Event.. You will find a button to access Object Spy feature there to get the
attributes of new element. Object Spy is also useful in updating existing attributes of the element in
case application has changed since the test was recorded.
Project
Parameters
Groups
Browser
URL
Event
Project
On selecting the Project node in the Editor tree you can see following on the right hand side tab:
Host Settings
For each unique host used in the test there is a host setting entry in this table. Each browser and url
in the test are linked to the host setting shown in this table. In case you need to execute recorded
test against your application on some differnt host you just need to edit the host settings here. You
dont need to worry about changing host for each recorded URL or browser. Just changing host
settings here will result in replaying test against new host. You can edit the Host Name, the Port
number and select the protocol between HTTP and HTTPS here. You can also parameterise the
host settings to replay test against different hosts during multiple iterations.
Group Settings
Replay Linked projects/groups: For any Automated testing tool one of the important feature is the
reusability of the existing scripts. AppPerfect provides the feature of linking exisiting scripts with the
host script so that without re-recording common functionalites already implemented in existing
scripts can be reused. Select this checkbox if you need to replay linked projects/groups. For more
details refer to Link Projects chapter.
Groups Table: In a project the tasks are stored in logical groups. This enables users to better
organize the test. A test can have one or more groups. All the groups in the test are shown in this
table. You can :
test).
Re-order groups : To move groups in the test and change order for their execution.
Parameters
An important aspect of designing a good test is to define parameters correctly. Most modern
applications use some kind of parameterization scheme to communicate data between the end user
and the Web application. When a Web Test is recorded via a browser, all parameters that are
encountered for the recorded URLs are stored in the test project. These recorded parameters can
be managed via the "Parameters" tab in the Test Editor.
Additional information about parameterization can be found in the Parameters chapter.
Groups
The recorded test consists of a number of "Groups". A Group is a logical unit for combining actions
inside a test. After recording, all Browsers/URLs/Events are stored in the Group for which recording
was done.
Behavior of the various groups can be configured by clicking the group node in the Editor tree and
setting its properties on the right side of the window. Following properties can be set:
Group Details
Group Name: This is the unique identifier associated with a group. Each group in the test should
have a unique name.
Starting URL: This is the starting URL which is used when recording tasks in this group. While
recording application launches new browser with this starting URL.
Launch New Browser: Should be selected in case you want application to launch new browser
when execution of this group begins. In case there are multiple groups recorded in the test, then you
can reuse the Browsers created in earlier groups by keeping this option unchecked. In such cases
you should use same Browser identifier across multiple groups.
Ignore Group: To decide whether the group should be ignored while executing test.
Set Proxy while replaying: Should be kept selected if test was recorded with Internet Explorer and
there was simultaneous recording for Load Test done.
Session is managed using url-rewriting: Select this option in case your application maintains
session using URL-rewriting. For ex. in case your application sends the session id as part of url path
like http://www.abc.com/XY/SESSIONID/PQ then you need to select this option.
Authentication Settings:
In case your application requires Authentication then same should be configured here. Refer to
Authentication Schemes for details on various authentication mechanisms that can be configured
with AppPerfect.
Browser Settings
Browsers Table: Each group can have multiple browsers recorded in it. All the recorded browsers
in the test are shown in this table. You can :
To move a Browser/URL/Event from one group to another, click right mouse button on that Browser/
URL/Event, select Cut from the popup menu, click right mouse button on the new group where you
wish to paste it, and select Paste from the popup menu. The default group that is recorded is called
ActionGroup1. Right click it to access the following:
Properties
Browser
Within a Group, several browser instances may be recorded depending on if you have opened new
browser windows while recording the test. Behavior of the various browsers can be configured by
clicking the browser node in the Editor tree and setting its properties on the right side of the
window. In the right hand side panel you can view the first page recorded in the browser and the
following tabs:
Details
Browser title: This is the unique identifier associated with a browser. Each browser in the test
should have a browser title associated with it. During execution application uses this title to check if
new browser should be created or if there is already a browser open with given title and can be
reused.
Timeout: This is the maximum time application waits before marking the browser task as timedout
during execution.
Host Name: This is the host settings associated with the page loaded in the browser. While creating
new browser application uses this host in the url to launch the browser.
Think Time: This is the time application waits before creating a new browser during execution. This
think time is used only in case you have "Ignore think time during replaying" unchecked at Project ->
Properties..
Path: This is the url path associated with the page loaded in the browser.
URL/Event
Here you can see the list of all the URLs/Events accessed within the browser while recording. You
can ignore, delete or reorder URLs/Events here. Multiple urls/events can be selected at a time and
can be deleted or reordered. You can set breakpoints at any of the URLs/Events. While replaying
the test, these breakpoints will be taken into consideration and application will prompt you for action
like if you need to Continue replaying or Stop test etc.. when this breakpoint is reached
Right click a browser node to access the following:
from same project or from other projects using this option. You need to provide the path for
the .record file present at the project location from where you need to import.
Script Editor
Properties
Replay till this point and record thereafter : When you do browser recording application
launches new browser with starting URL. Using this option you ask application to first replay
test till selected task and then continue recording. This way you can record in the middle of
the test using browser recording.
URL
Each browser will have several URLs recorded. In the right hand panel you can view the following
tabs:
Details
Title: This is the title of the page as seen in the browser title bar.
Timeout: This is the maximum time application waits for page before marking the url task as
timedout during execution.
Ignore parameter validation: By default application does not compare the URL parameters in
recorded and replayed urls. In case you need to do this validation you should uncheck this option.
Set Breakpoint: You can set breakpoints at the selcted URL. While replaying the test, these
breakpoints will be taken into consideration and application will prompt you for action like if you need
to Continue replaying or Stop test etc.. when this breakpoint is reached.
Think Time: This is the time application waits before fetching the response from the browser. This
think time is used only in case you have "Ignore think time during replaying" unchecked at Project ->
Properties..
Host Name: This is the host settings associated with the url.
Fire URL: By default application does not fire the urls on its own. It assumes the events to navigate
the pages in the browser. In case you need to fire any URL explicilty then you can select this option.
In case this option is selcted application will fire the url in browser after constructing the same using
the host name, path and url parameters.
Path: This is the url path associated with the page.
Ignore URL: To ignore the url during replaying.
Benchmark Page: This shows the path for the recorded page stored on the disk. The web page
you see in the browser control at top is shown using this path. You can add validation to the URL
only if there is a page stored for the url. In case your application page has changed since the test
was recorded, you should set the benchmark page to new version of the page.
Parameters
If there are parameters associated with the selected URL, you can see them here. You can
parameterize these parameters. For more details refer to the chapter on Parameters.
URL / Event
Here you can see the list of all the URLs/Events recorded within the selected URL. You can ignore,
delete or reorder URLs/Events here. Multiple urls/events can be selected at a time and can be
deleted or reordered. You can set breakpoints at any of the URLs/Events. While replaying the test,
these breakpoints will be taken into consideration and application will prompt you for action like if
you need to Continue replaying or Stop test etc.. when this breakpoint is reached
Validation
As a web application developer or tester, you will design (or test) your application based on a 'valid'
set of responses expected from the application. You can set these validations for each web page
after you have recorded the test. This feature is highly useful for regression testing.
You can add validations to URL page here. To add new validation right click the desired DOM tree
node of the Standard DOM tree you can see above these tabs. It will show the following options :
Expand All / Collapse All : To expand/collpase the dom nodes in the tree.
Find... : To search for particular node in the tree
View Source : To view the HTML source of the recorded page.
Change Benchmark Page : To change the path of the stored page
Show Advanced Tree: To view the Advanced DOM tree, which is created using HTML
source tree showing all the html elements used in the page.
Show Validations Tree : To view only those nodes which has validation added. This will show
nodes only if you have added any validation for the page.
Validate HTML Source : To compare or validate complete HTML source of the page.
Add Validation : If selected node in the DOM tree is a root node then Add validation option
can be used to add Page validation. You can also add Attribute validation in case selected
node is an element node.
Edit Validation : To edit already existing validation.
Delete Validation : To delete any existing validation
Add Text Validation : To add Text validation, that is to find if a particular text or value is
present on the page. Validation supports both cases sensitive and case insensitive search.
You can also parameterise the value to find and can also use regular expressions to search.
Add Date Validation : To add Date validation where you can compare the date value present
on page against today's date in different formats.
Add Database Query Validation : To add Database Query validation where you can validate
if the ResultSet returned as a result of query is empty or not.
Properties
Replay till this point and record thereafter : When you do browser recording application
launches new browser with starting URL. Using this option you ask application to first replay
test till selected task and then continue recording. This way you can record in the middle of
the test using browser recording.
Event
Each browser/URL will have several events recorded. In the right hand panel you can view the
following tabs:
Details
Title: This is the title of the recorded event which is helpful in identifying the event.
Timeout: This is the maximum time application waits for event to reply successfully before marking
the event as timedout during execution.
Search element using exact match of attribute values: While finding elements having href and
src attributes, application does not match the complete string but just checks for the occurence of
these attributes in the substring while doing comparision. This is done because href and src
attributes generally are created dynamically or have parameters which changes dynamically. You
can select this option in case you need exact comparision for these attributes while finding element
during execution.
Set Breakpoint: You can set breakpoint for the selected event. While replaying the test, these
breakpoints will be taken into consideration and application will prompt you for action like if you need
to Continue replaying or Stop test etc.. when this breakpoint is reached.
Think Time: This is the time application waits before replaying this event. This think time is used
only in case you have "Ignore think time during replaying" unchecked at Project -> Properties..
Element: This is the name of the element on which event was recorded. The element name is
picked from the elements configured at Tools -> Options -> Web Test -> Web/Window elements.
Element Class: This is the tag name or native class of the element on which event was recorded.
Ignore Event: To ignore the event during replaying.
Event: Drop down showing all the events which are supported on this element. This drop down as
the recorded event selected. In case you need to change the recorded event for the element you
can change it here by selecting the required event. You can see the event arguments for the
selected event in the table below. You can edit the event arguments or parameterize the same.
Object Spy: In case you need to update attributes for the element you can use Object Spy to do so,.
Attributes
You can see all the recorded attributes/properties for the element here. These attributes are used
while searching the element during replaying. You can parameterize and edit attributes here.
You can right click the Event node to access the following features for Event:
chapter on Parameters.
Properties
Replay till this point and record thereafter : When you do browser recording application
launches new browser with starting URL. Using this option you ask application to first replay
test till selected task and then continue recording. This way you can record in the middle of
the test using browser recording.
Parameters
Parameter are used in most modern applications to communicate data between the user and the
application. AppPerfect offers extensive parameter-management. Parameter selection and hence
testing with various parameter values is completely automated. Parameter values are passed either
via the URL itself or via the event arguments and attributes. In the AppPerfect application,
parameters are stored as name-value pairs, making it intuitive for application developers and
testers. Then, depending on the number of iterations for your project, multiple parameter values can
be tested, with options to select parameters sequentially or randomly. The following types of
parameters are supported in AppPerfect Web Test:
Runtime parameters
Runtime parameters are those parameters whose value can be picked either from a DB or from a
CSV file just before the replaying of test or task starts. This way AppPerfect Web Test ensures that
it is running the test with most recent values present in either DB or CSV file. You can change the
values in DB and CSV file just before running the test in order to test this application with
different parameter values.
Fixed parameters
Fixed parameters are those parameters whose values can be entered manually or picked from DB
or picked from CSV file while defining the test. AppPerfect Web Test will maintain this hard-coded
list of values and will use these values during replaying. In this case each time test is run same set
of values will be used.
Parameterization
Consider a Web application with a login page which takes a user name and a password. You need
to test this page to ensure valid users (of various categories) are accepted and invalid users
(incorrect user name/password) are rejected. To test this page, what you essentially want to do is
connect a series of user names and passwords to the login page. This process of defining multiple
values for elements is called Parameterization.
While it is possible to manually go to the login page and enter each of the user name/password
values and then have the test repeated, often, the number of combinations of input values is too
large to perform manually. Consider a case of an e-commerce Web site with thousands of items in
the database. In such cases, parameterization plays a vital role in making your tests flexible and
powerful.
Element/Event Parameterization
AppPerfect Web Test records attributes for the HTML/Window element on which event was
recorded. It also records the event arguments which should be used to replay events, like "text"
argument containing the value with which set/type events should be executed. You can
parameterise Atributes as well as event arguments. Multiple parameter values can be defined for a
recorded element. If the test is run for multiple iterations you will also need to specify the
mechanism that the AppPerfect Web Test must use to pick from the list of possible values. Random
and Sequential are two supported ordering in which values can be selected.
URL Parameterization
In most real world Web applications, URLs are not simple static links. Most are dynamic URLs
designed to handle a variety of tasks. A simple example would be a login page. In a real world
scenario, you might have dozens if not more registered users, each with their own password and
other information such as locale, timezone. For such a scenario, the URL could be:
http://machine:port/application/login.jsp?user=username&password=userpwd&timezone=pst
In the URL above, "user" and "password" are parameters that are accepted by the "login.jsp" URL.
The "username" and "userpwd" are parameter values that the user may have entered in the login.
jsp form page and clicked on the Submit button. Most modern Web sites use this kind of mechanism
of passing parameters and values through the URL. One of the most common objects passed as a
URL parameter is a "session id".
AppPerfect Web Test recognizes the wide spread use of parameters and provides extensive
support for it. Parameters can be created and then applied to individual URLs that have been
recorded. You can also define whether the applied parameters must be applied sequentially or
randomly on subsequent invocation of URL.
Select the URL node in the Editor tree and on right hand side Click the 'Parameters' tab.
Here you can see the list of parameters that have been encountered while recording the
task. Click a parameter name and then the button 'Parameterize'.
You can also parameterize recorded attributes of element. Just select any element/event in
the Editor tree and select Attributes tab on right hand side window and parameterize the
Attribute using the "Parameterize" button provided.
You can also parameterize arguments in event apis. Just select concerned event in the
Editor tree and on right hand side Details tab look for Event arguments if any and
parameterize the same using the "Parameterize" button provided. Say for example in case
you need to run test with differnt input values for set/type events, then you can parameterize
the "text" argument in this case.
On clicking 'Parameterize' button a parameter settings dialog will be shown, which will allow you to
configure parameter value as constant or configurable test parameter. You can create new test
Fixed Values
Calculated Values
Pass-Through Values
Parameter Selection: You can choose parameters Sequentially or Randomly. The Random
selection option is very useful when you want to test a large number of values in limited time. Every
replay of the test will pick random values, thereby giving you a good picture of the application's
stability and performance.
Add Value: If you want to add parameters manually (Fixed Values), then enter the values in this
field and click the Add button. The values added will appear in the non-editable text area Parameter
Values.
Fixed Values
Use Fixed Values when there are only a few values you want to test the parameter with. You
can configure parameter to have fixed pool of values from where the value should be picked
during execution. But in most cases, you will find that Importing the values from a Database
or a CSV file will make your web application's testing for parameters very efficient.
If you select 'Runtime' the connection with your CSV file will be established while the test is
being replayed when you reach the point where values have to be provided. This will be
slower than the earlier option, but more realistic for testing.
Fetch All Rows: Select this checkbox if you want to fetch all rows from the CSV file. Please
ensure that you are aware of how many rows are contained in the CSV file so that the time it
will take to fetch the values can be built into replaying the test.
Number of rows to fetch: Enter the number of rows to fetch if you have not selected the
previous checkbox.
Calculated Values
In case you need to generate unique parameter values automatically with fixed prefix/suffix
or if you need to generate date from Today's date or random date in various format then you
can select Calculated values as datasource. For example in case you calculate as "number"
with fixed prefix say "example" and increment by 1, then values generated would be
example1, example2, example3 etc. If you select Calculate as "Date", you will be able to
configure the date format (either select from pre-defined date formats or provide your
custom date format as it is an editable combo box). You can choose between Today's date or
Random Date. In this case application will generate the value as date string in specified
format.
Pass-Through Values
Pass-Through parameters are those whose value will be picked from the response of
previous URL while replaying the test. You can set pass-through parameters in the
Parameters view by selecting the "Pass-Through Values" from the data source combo box.
An example of Pass-through parameter is a session ID. This variable will have a value
assigned it to based on some algorithm only at run-time. If you run a test using the stored
value of a session ID, your test may not go further than login as that session might have
expired. For a situation like this, you need to set the 'Pass-through Values' option for the
parameter.
Authentication Schemes
AppPerfect products support various authentication mechanisms. In case your application requires
authentication you need to configure same in AppPerfect while recording/replaying test. Please find
below details of each authentication scheme supported.
NTLM Authentication:
NTLM is a scheme defined by Microsoft. It is more secure scheme than Basic, but less secure than
Digest. NTLM can be used with proxies or servers, but not with both at the same time. If a proxy is
being used, then it cannot be used for server authentication. This is because the protocol actually
authenticates the TCP connection rather than the individual HTTP interactions. On Microsoft
Windows platforms, NTLM authentication attempts to acquire the user credentials from the system
without prompting the user's authenticator object. If these credentials are not accepted by the server
then the user's authenticator will be called.
Because the Authenticator class was defined prior to NTLM being supported, it was not possible to
add support in the API for the NTLM domain field. There are three options for specifying the domain:
a) Do not specify it. In some environments, the domain is not actually required and the application
need not specify it. b) The domain name can be encoded within the username by prefixing the
domain name followed by a back-slash '\' before the username. With this method, existing
applications that use the Authenticator class do not need to be modified, so long as users are made
aware that this notation must be used. c) Define system property "http.auth.ntlm.domain", the value
of this property will be used as the domain name.
Validations
As a web application developer or tester, you will design (or test) your application based on a 'valid'
set of responses expected from the application. You can set these validations for each web page
after you have recorded the test. This feature is highly useful for regression testing.
To add validation for any URL, select the URL node in the Editor tree and on right hand side select
the Validations tab. You will find the DOM tree of the stored response at top. Right click on the DOM
element node for which you need to add validation and select the required option from the popup
menu. Following are the different kinds of validations which are supported :
Page validation
Text validation
Attribute validation
Date validation
Custom validation
Page Validation:
You can add Page Validation by selecting the root node in the DOM tree and clicking the Add
Validation... option from the popup menu. This kind of validation is done by parsing the complete
page. You can validate following :
Text Validation:
To find if a particular text or value is present on the page or not you can use this validation. Click the
"Add Text Validation..." option from the popup menu on the DOM tree to access the Text Validation
Setting dialog box. Here you can set the following:
Description: Provide the description of the text validation here. It should be as informative as
possible explaining the purpose of the validation.
Fetch Text present between: Provide surrounding values for text you want to search in the page.
for e.g. say you have multiple occurrences of word "Support" in the page but you need to check
against only that value which exists between "AppPerfect" and "Team", then you can provide
"AppPerfect" and "Team" as the two words between which the search for "Support" should be done.
This validation will be successful only if you have "AppPerfect Support Team" present on the page.
Text Not Exists: This option should be selected to negate the search result. If this checkbox is
selected application will report success only if text to search is not present in the page.
Case Sensitive: This option should be selected in case you need case-sensitive search for the text.
Regular Expression: We use jregex for pattern matching for search string. Please check the docs
for same at http://jregex.sourceforge.net/doc-index.html having all the required details for the
patterns you can use for string matching.
Check For: Here you can provide the text to search or validate. You can provide Exact Match value
or multiple list of values which should be checked. If you want to parameterize text then specify the
Test Parameter Name between @..@ and configure that Test Parameter in Parameters view.
Attribute Validation:
You can add Attribute Validation by selecting the element node in the DOM tree and clicking the
Add Validation... option from the popup menu. This is useful in case you need to validate properties
like innerText or value etc. of specific HTML element in page
Date Validation:
Here you can compare the date value present on page against today's date in different formats.
Click the "Add Date Validation..." option from the popup menu on the DOM tree to access Date
Validation Settings. In case of Date validation application looks for date string in the response and
decides success or failure based on that, meaning say todays date is July 8, 2008 then application
will look for string 08/07/2008 in case of format dd/MM/yyyy and 07/08/08 in case of MM/dd/yy. If
exact matching string is not found that application will treat validation as failure.
Custom Validation:
Apart from validations explained above, In case you need to perform any custom validation on Web
Page you can do so using scripting. AppPerfect stores recorded test as javascript and one can add
custom code to the test script to perform any custom URL or database validation. We support
custom scripting apis, using which you can parse the response and fetch appropriate fields from the
response page and validate it against the required value. You can also use scripting apis to fire any
database query and perform the required validation by fetching the required data using the result
set. Please refer to Customizing Test Script chapter for more details.
Script documentation
class from script code and call methods on those java classes.
For ex. lets say there is a custom class com.appperfect.sample.utils.UtilityFunction and you need to
use its function getCurrentTime() in the script. To do this you will need to add following script code :
importPackage(Packages.com.appperfect.sample.utils);
var utilityObj = new UtilityFunction();
var currentTime = utilityObj.getCurrentTime();
log('currentTime :' + currentTime);
url.setIgnored(false);
url.setThinkTime(1);
url.setIgnoreParam(true);
url.setTimeout(30);
url.setBreakPoint(false);
url.setFireURL(false);
url.setTitle('AppPerfect');
url.setBenchmarkFile('recorded/2009_3_21_1_40_52_37/ActionGroup1/URL_2.html');
var successful = engine.executeURL(url);
if(! successful)
{
log('URL Failed');
}
else
{
//log('URL is Successful');
//Validations may be added here.
//Custom Validation code starts here
var validationSuccess = false;
// DatabaseId used in following API is the database id configured at Tools -> Options ->
Browsers, JDKs & DBs
var resultset = engine.executeSelectQuery("DatabaseId", "select productname from
Products");
// process the result set here
while(resultset.next())
{
var productName = resultset.getString(1);
if(productName == "Web Test")
{
validationSuccess = true;
break;
}
}
engine.closeResultSet(resultset);
if(!validationSuccess)
{
url.setTaskSuccessful(false);
url.setReasonForFailure("Custom validation Failed: Product Web Test not present in
database.");
}
//Custom Validation code Ends here
}
engine.release();
}
Lets say you have a form in the Web page which has a input text field. Now you need to fill this input
text field with the value retrieved from a table in the web page. You will have a "set" event recorded
on Input text field in the text. The following code demonstrates passing the value fetched from table
to the set event on input text field :
We will first declare a global variable 'parameterValue' at top of the script code in which we will be
storing the value we get after parsing response.
var parameterValue;
Now we will parse the URL and initialise parameterValue with the value we need to pass to the
event.
function executeUrl_2() // script function for AppPerfect Product Page
{
var url = engine.createURL(2, 'http', 'www.appperfect.com', 80, '/', false);
url.setIgnored(false);
url.setThinkTime(1);
url.setIgnoreParam(true);
url.setTimeout(30);
url.setBreakPoint(false);
url.setFireURL(false);
url.setTitle('AppPerfect');
url.setBenchmarkFile('recorded/2009_3_21_1_40_52_37/ActionGroup1/URL_2.html');
var successful = engine.executeURL(url);
if(! successful)
{
log('URL Failed');
}
else
{
//log('URL is Successful');
//Validations may be added here.
//Function to parse the response starts here
var htmlPage = url.getWebResponse(); // this will return instance for com.gargoylesoftware.
htmlunit.html.HtmlPage
var tableElement = htmlPage.getHtmlElementById("productTable"); //here we are querying the
product Table
if(tableElement)
{
//Now we will get the data from the required cell in the table
var cellElement = tableElement.getCellAt(1, 2);
//Intialising the parameterValue with the value we need to pass to the set event
parameterValue = cellElement.getNodeValue();
}
//Function to parse the response Ends here
}
engine.release();
}
We have parsed the response and have initialised the global variable parameterValue with requried
value. Now we will pass this value to set event argument.
function executeEvent_3() // script function for set on WebInputElement q : AppPerfect
{
var element = engine.createWebInputElement(3, 2);
element.setIgnored(false);
element.setThinkTime(2);
element.setTimeout(30);
element.setExactMatchForAttributesComparision(false);
element.setBreakPoint(false);
element.setTitle('set on WebInputElement q : AppPerfect');
element.addAttribute('autocomplete', 'off', false, false, '');
element.addAttribute('maxlength', '2048', false, false, '');
element.addAttribute('name', 'q', false, false, '');
element.addAttribute('size', '55', false, false, '');
element.addAttribute('title', 'Product Search', false, false, '');
element.addAttribute('tagIndex', '1', false, false, '');
//Passing parameterValue to the set event argument
element.set(parameterValue);
engine.release();
}
Script documentation
Refer to Scripting documentation for more details on scripting apis supported. While editing the
script in script editor, you can open the API documentation using Help -> Java Documentation...as
well
Recording Failure
Common problems user faces during recording are as follows :
Unable to see page fine in the Browser once browser launches during recording
Unable to record any event on application while using Safari or Firefox Browser
The url provided is incorrect or target server is down. So first check if you can access your
application fine outside of AppPerfect using the starting URL provided. Also make sure that
you provide complete url including the protocol, for ex. http://www.AppPerfect.com
Make sure that if you are using some proxy to access your application then same is
configured at Tools -> Options -> Proxy Settings -> Target Proxy Server Settings
In case your application requires Authentication then make sure that you have configured
same under Authentication Settings in AppPerfect Recorder dialog.
Make sure that firewall on machine is not blocking the access to target application.
Unable to see page fine in the Browser once browser launches during recording
This generally happens when application uses local Proxy for Recording on non IE browser or while
recording Load Test script simultaneously. Common reason of this is because of not being able to
set proxy fine in the Target browser. In such cases you may need to set proxy manually in the
browser. Refer to Proxy Recording chapter for details on the proxy settings configuration in browser.
Also make sure that firewall is not blocking the port used to launch the local proxy and this port is
not used by any other application on machine. By default application uses port 8690 for starting
local proxy.
Another reason when this could happen is when you are trying to test application deployed on local
server in which case you are using localhost in the starting URL. In such cases make sure to use IP
of the machine in the starting url. So instead of using http://localhost:port/xyz you should use http://
machine-ip:port/xyz as starting url where machine-ip is the IP address of the machine where target
application is running.
Unable to record any event on application while using Safari or Firefox Browser
While recording Web Test for Firefox or Safari or any non-IE browser, application starts a local
proxy server and sets same in the browser. So first check that proxy is getting set fine in browser.
Refer to Proxy Recording chapter for details on the proxy settings configuration in browser. Once
proxy is set in browser this local proxy server injects each response with recorder javascript. This
recorder javascript takes care of recording the events on web application. So if your application has
javascript errors and if for some reason the page does not completely load in the browser then
application will fail to record any event as the recorder script will be unable to load in that case. So
make sure that your application runs without script errors when run normally outside of AppPerfect.
Flash application recording is supported only with Internet Explorer on windows. In general all the
window specific components are supported only when recorded on windows platform using Internet
Explorer. In case you need to test Flash applications in Safari or Firefox browser on Windows
platform, you can use AppPerfect App Test product for same.
Replaying Failure
Common problems user faces during replaying are as follows :
Unable to find element on the page and test fails with time out errors
Unable to see page fine in the Browser once browser launches during replaying
Replayer does not wait for target application to load completely in browser
Unable to find element on the page and test fails with time out errors:
During replaying application uses a search algorithm to find the desired html element on the target
web page. Application first tries to find the element at recorded element position also know as
"tagIndex" It then compares the recorded attributes/properties of the element against the one it finds
from element at recorded tag index. Now if some of the attributes does not match then application
tries to find the matching element with maximum number of matching attributes in the vicinity of the
recorded tag position. In case if application cannot find any element with matching attributes then
report the event as failure. In such cases check that the recorded attributes are not changing during
each run. If they are changing then you need to ignore same which can be done by selecting the
Event in the Editor tree and ignoring the changing attributes on right hand side Attributes tab. You
can refer to Results view and see the reason for failure for the event to find which attributes did not
match for the element during replaying
Another common reason for this failure is that application did not wait for enough time to complete
page initialisation and hence required element is not available when application tries to replay on
same. In such cases you should replay test with "Ignore think time during replaying" deselected at
Project -> Properties.. and providing appropriate think time for each of the step.
Also the failure could be genuine in case target application has changed since the test was
recorded. So in case if the element's properties have changed since the test was recorded then you
need to update the properties as explained in Object Spychapter.
The target server is down. So first check if you can access your application fine outside of
AppPerfect using the starting URL provided.
Make sure that if you are using some proxy to access your application then same is
configured at Tools -> Options -> Proxy Settings -> Target Proxy Server Settings
In case your application requires Authentication then make sure that you have configured
same under Authentication Settings for the Group.
Make sure that firewall on machine is not blocking the access to target application.
terminated. Open Script Editor using Project -> Script Editor and go to that line number and see
what is wrong with the script code. In case you have done any editing to the script to add custom
code then make sure that you have followed all steps correctly as mentioned in Adding Custom
Code to Test Script chapter.
Unable to see page fine in the Browser once browser launches during replaying
This generally happens when application uses local Proxy for Replaying on non IE browser.
Common reason of this is because of not being able to set proxy fine in the Target browser. In such
cases you may need to set proxy manually in the browser. Refer to Proxy Recording chapter for
details on the proxy settings configuration in browser. Also make sure that firewall is not blocking the
port used to launch the local proxy and this port is not used by any other application on machine. By
default application uses port 8690 for starting local proxy.
Replayer does not wait for target application to load completely in browser
If application does not wait for enough time to complete page initialisation in such cases you should
replay test with "Ignore think time during replaying" de-selected at Project -> Properties.. and
providing appropriate think time for each of the step. In this case application will wait for specified
think time before replaying each of the step.
The command to be used to invoke product in non-ui mode from command line looks :For Windows:
For Linux
Here "org.eclipse.core.launcher.Main" is the main class which will internally invoke the application
passed and will hand over the control to that application. The main application class is "com.
appperfect.teststudio.nonuiRunner" which will be responsible for executing the project passed as "projectfile" parameter. The parameter "-data" is to specify the workspace location which should be
used for executing the application and "-producttype" is a constant integer value used to indicate
which product to run from the project file. The supported product type values are 1 for Java Code
Test, 2 for Java Unit Test, 4 for Load Test, 5 for Web Test and 8 for App Test.
To check the various parameters that can be passed as the command line arguments to the
command open the exported command line batch file in Text Editor. It has all the supported
parameters listed.
Once you have svn server installed and repository configured, you need to configure the AppPerfect
client (AppPerfect Web Test / Load Test / App Test / Java Code Test / Java Unit Test / Java Profiler)
so that client application can access the SVN server for sharing projects
Once you have AppPerfect client configured with SVN Server settings, you can access following
features of SVN Server using File -> Repository menu from AppPerfect Client.
Checkout Projects
Synchronize Workspace
Share Project
Synchronize Project
Synchronize Rules
AppEnterpriseServer/WEB-INF/lib/apcommon.jar;
Once you have classpath set, run the following java command, make sure you have java binary in
the PATH :
On Windows:java com.appperfect.util.RepositoryConfigurationUpdater %REPOSITORY_PATH% %
SVN_USERNAME% %SVN_PASSWORD%
Note : REPOSITORY_PATH would be location where we created Repository, for ex, F:
\AppRepository, Use back slash (\) as path separator and not forward slash.
On Linux/Solris/Mac OSX:java com.appperfect.util.RepositoryConfigurationUpdater $REPOSITORY_PATH
$SVN_USERNAME $SVN_PASSWORD
where REPOSITORY_PATH would be location where we created Repository, for ex, F:
\AppRepository
SVN_USERNAME is the user who can access the Repository, for example, admin
SVN_PASSWORD is the password required to access the Repository, for example, admin
Using AppPerfect Client you can synchronize local copies of all projects in the workspace with the
projects stored in SVN repository using File -> Repository -> Synchronize Workspace... option. It will
launch the Syncrhonize dialog, you can compare the local changes with the one stored in repository
and take appropriate action to commit or update.
Share Project
Using AppPerfect Client you can share local copy of the project with SVN repository using File ->
Repository -> Share Current Project... option. For performing any commit or synchronize action you
need to share the project first.
Synchronize Project
Using AppPerfect Client you can synchronize local copy of currently opened project with the project
stored in SVN repository using File -> Repository -> Synchronize Current Project... option. It will
launch the Syncrhonize dialog, you can compare the local changes with the one stored in repository
and take appropriate action to commit or update.
Synchronize Rules
Using AppPerfect Java Code Test, you can synchronize local copy of system settings with the
settings stored in SVN repository using File -> Repository -> Synchronize Rules... option. It will
launch the Syncrhonize dialog, you can compare the local changes with the one stored in repository
and take appropriate action to commit or update.
IDE Integration
IDE Integration is a highly useful feature in the AppPerfect applications. You can integrate the
AppPerfect applications with any of these popular IDEs : Eclipse, NetBeans, IntelliJ Idea, JBuilder
and JDeveloper. Once the product is installed, then any time later you can integrate with the IDE
using Tools -> IDE Integration menu-item.
Un-Integrating
You can un-integrate the AppPerfect products from the IDE from the same menu-option. Click Tools
-> IDE Integration and from the list of IDEs shown on this dialog, select the IDE from which you wish
to un-integrate AppPerfect. You must close the IDE before un-integrating.
Integrating
Plugin Installation
Plugin Installation
Plugin Installation
Plugin Installation
JDeveloper 10g
Plugin Installation
Plugin Installation
Plugin Installation
JDeveloper 10g
Plugin Installation
When you select the option to integrate AppPerfect with JDeveloper, the following steps are taken:
Step 1: The plugins jar and other required jars are placed in the JDEVELOPER_HOME\lib\ext folder.
Integration with JDeveloper
Once the IDE integration has taken place, you will be able to access the AppPerfect menu in the
following ways within JDeveloper:
1. AppPerfect menu-item will be added within the JDeveloper toolbar. Click it to launch any of the
AppPerfect products.
2. AppPerfect products can also be accessed through context-sensitive pop-up menus.
AppPerfect product will start a new instance after gathering available details from the IDE.
UI Reference
This chapter gives an overview of the various components in the UI of AppPerfect Web Test.
In the AppPerfect Web Test project area there are two panes: the left hand navigational frame and
the right hand frame that holds the panel for the selection made on the navigational frame. The right
frame gives the details of the selection on the left frame. For example, consider that the Editor Tab
has been selected on the left frame. The right frame will show the General Settings and Attribute
Settings for the element selected on the tree.
There are two tabs shown in the left navigational frame:
Editor Tab
The left hand navigational frame shows the Editor tab with the test tree as soon as the recording is
over. When a test has been recorded, selecting an element on the test tree makes the right frame to
show the panel for settings for the element selected on the test tree. The test tree has a root node
that is name of the test and one or many group nodes that represent the different groups in the test.
The group node can have various types of node such as URL, sub-URL, event, and element. When
the Test node, that is the parent node for the test tree, is selected the right frame shows the Project
Settings and List of Groups in the test. When the Group node is selected on the test tree, the right
frame shows the Group Settings and List of URLs in the group. When an URL is selected on the
test tree, the right frame shows the General Settings and the Parameter Settings for that
particular URL. When an event is selected on the test tree, the right frame shows the General
Settings and the Attributes Settings for that particular event. When an element that is related to
text such as a text area, text set, password selected on the test tree, the right frame shows the
General Settings, the Attributes Settings, and the Value Settings for that particular element.
Results Tab
Once a test is complete the reports generated for that test are shown in this tab.
The Results tab on the navigational frame shows the reports tree. The Reports tab is not seen on
the left frame when a new test is created or an existing test is opened. It can be seen only when a
test is replayed. The Results tab is also seen when a test result file is opened using the Open
Result option in the File menu.
Menu Items
File Menu
Save : Saves a project to the location where it was opened from or previously saved
Result > Save : Saves the result of the project in "results" folder
Result > Export Complete Result... : Export complete result to selected format
Edit Menu
Project Menu
Send Result To... : Makes a zip file of the results of the current project and attaches
it to a new email using the default email client
Properties.... : Opens the project properties wizard that allows to set/change the
project properties
Preferences... : Opens the common Web Test project wizard to set/change properties
Tools Menu
Export Project As Command Line... : Export your Web Test project as Command
IDE Integration... : Opens the dialog box requesting selection of IDE to integrate with
Options... : Opens the options wizard that is used to set system properties
Help Menu
Search : Shows the entire help for the system with the search tab selected
Technical Support : Takes you to the AppPerfect Support page on the Internet
About AppPerfect Web Test : Shows the information such as version, copyright
related to AppPerfect Web Test
Toolbar Items
- Starts the test. All the test settings will be checked and if there are no errors then the
test will start running
- Pauses the test temporarily and then can be restarted after some time
- Stops the test. This will stop a test and the required reports will be generated
Status Bar
View - Shows the edition of the AppPerfect Product: Evaluation, Standard or Professional.
Status - Shows the status - Recording in Progress, Replaying in Progress or Reports Ready.
Time - Shows time elapsed since recording started while recording is in progress. Shows
time elapsed since replaying started when replaying is in progress.
Date - Shows the current date and time.
URL validation
URL Parameter validation
Event Validation (Whether the recorded events gets replayed or not)
Iteration-wise reponse validation (You can use Parametratization to pass different set of
values for each iteration)
Most Web applications are dynamic in nature and work interactively with the user's data. User data
is communicated to the application by means of parameters. Parameters can either by passed via a
URL or as part of the Http header of the request. AppPerfect provides extensive support for defining
and using parameters. Once a test is recorded, AppPerfect stores all parameters into the project as
a property/value pair. Click on the "Parameters" node in the Editor to manage parameters.
What are dynamic parameters? How do they work?
A dynamic parameter is a parameter whose value is not know at test design time. An example of a
dynamic parameter is a session ID. A unique session ID is generated once you log in to your server.
AppPerfect supports defining such dynamic parameter and tying its value to either a returned value
in the http header or in the URL.
My dynamic menus are not being recorded and replayed. What do I do?
Most dynamic menus are implemented using the "MouseOver" event in JavaScript. By default, this
event is NOT recorded. You must manually select recording this event by selecting Tools -> Options
-> Web Test -> Auto Detect mouse-over events on elements having mouse-over event handlers.
I want to run multiple iterations of my test, each with a different set of parameter values. How do I do
that?
These are the following ways in which you can access the Parameter Setting Wizard.
Select the URL node in the Editor tree and on right hand side Click the 'Parameters' tab.
Here you can see the list of parameters that have been encountered while recording the
task. Click a parameter name and then the button 'Parameterize'.
You can also parameterize recorded attributes of element. Just select any element/event in
the Editor tree and select Attributes tab on right hand side window and parameterize the
Attribute using the "Parameterize" button provided.
You can also parameterize arguments in event apis. Just select concerned event in the
Editor tree and on right hand side Details tab look for Event arguments if any and
parameterize the same using the "Parameterize" button provided. Say for example in case
you need to run test with differnt input values for set/type events, then you can parameterize
the "text" argument in this case.
On clicking 'Parameterize' button a parameter settings dialog will be shown, which will allow you to
configure parameter value as constant or configurable test parameter. You can create new test
parameter and associate it with URL Parameter/ Event argument/Attribute here.
I want to check for certain value in one of the elements of the returned page to validate that the
request was correctly processed. How do I add such validation?
In the Editor view, click on the desired page. Click on the "Validation" tab. Add validation by
Close the currently opened project if it is open. Stop and close the application if it is running.
Go to Tools ->Options-> Log Settings. Make sure the settings selected for all the products is:
Debug (not Fatal).
Open the project. Perform the operations that are giving you the error. The moment you get
the error, stop all operations and send us the following files:
1. All files present in <WebTest_Home>\logs folder.
2. Project file i.e. *.adt file of that project.
3. Build number of the application. (Help->About AppPerfect...)
AppPerfect Scripting
Support
AppPerfect Software
License Agreement
Introduction
Creating a Web Project
Configuring a Database
Configuring Test
Parameters
Creating Task Groups in
Web Project
Creating tasks in a Web
task group
Validating a task
response
AppPerfect
Web Test v 10.5.0
Scripting User Guide
Creating Project
Exercise 1: Launch AppPerfect Web Test
1. Click on Start -> Programs ->AppPerfect Web Test x.x.x -> AppPerfect Web Test
2. On launching AppPerfect Web Test a Welcome page will be displayed. Go through the brief
description given for product.
Now using this project we will create tests to demonstrate the functionalities of AppPerfect Web Test
product.
11. Close browser by clicking on File -> Close in the browser window.
12. Click on the Stop button of "AppPerfect Recorder" dialog to stop the recording session.
13. Click on Close button to close the 'AppPerfect Recorder' dialog.
14. In the AppPerfect Web Test window, look at the tree on the left. Each action you performed
has been recorded.
15. Click on any of the recorded action on the left. The page associated with that action is
displayed along with the actual element highlighted on the right hand side.
Creating Project
Exercise 1: Launch AppPerfect Web Test
1. Click on Start -> Programs ->AppPerfect Web Test x.x.x -> AppPerfect Web Test
2. On launching AppPerfect Web Test a Welcome page will be displayed. Go through the brief
description given for product.
NB: Welcome page is displayed only when Web Test x.x.x is launched and last time no
project was opened.
button.
Now using this project we will create tests to demonstrate the functionalities of AppPerfect Web Test
product.
We shall be leaving default information for "Contact Information" on submitting the new
username and password. Sign-out and repeat process to add all the usernames and
passwords.
6. Finally sign-out and close the browser.
Click on the Stop button of "AppPerfect Recorder" dialog to stop the recording session.
Click on Close button to close the 'AppPerfect Recorder' dialog.
Save project by selecting File->Save menu.
In the AppPerfect Web Test window, look at the tree on the left. Each action you performed
has been recorded.
15. Click on any of the recorded action on the left. The page associated with that action is
displayed along with the actual element highlighted.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Under Add Value, enter sam and click on the 'Add' button.
Under Add Value, enter pet and click on the 'Add' button.
Click Ok.
Click on 'Add Parameter' button to add another parameter.
In the 'Parameter Setting Dialog', enter 'passParam' as the parameter name.
Select 'Fixed Values' as Data Source.
Choose 'Sequential' as parameter selection.
Under Add Value, enter smith and click on the 'Add' button.
Under Add Value, enter bradley and click on the 'Add' button.
Under Add Value, enter shop(a wrong password as per the user account we created for
username pet, the correct password was "store") and click on the 'Add' button.
Click Ok.
In the editor tree select the event which states something like 'set on WebInputElement
userName1 : john'.
In the details tab Click on the "text" argument in the Event Arguments table.
Click on the 'parameterize' button.
In the parameterization settings dialog, select "text" under the name column in the parameter
settings table.
On selection, in the value group, 'Constant' will be selected with the value john in the text box.
Select 'Parameterize' and from the combo box, select userParam. This will use the values of
userParam as username on each iteration.
Click Ok.
In the editor tree select the event which states something like 'set on WebPasswordElement
passWord : c21pdGg='. Its the second event below the event which states 'set on
WebInputElement userName1 :john'.
In the details tab Click on the "text" argument in the Event Arguments table.
Click on the 'parameterize' button.
In the parameterization settings dialog, select text under the name column in the parameter
settings table.
On selection, in the value group, 'Constant' will be selected with the value smith in the text
box.
Select 'Parameterize' and from the combo box, select passParam. This will use the values of
passParam as the password on each iteration.
Click Ok.
4. Stop running tomcat server by selecting Start->Programs->AppPerfect Web Testx.x.x>Documentation and Examples->Examples->Tomcat running Petstore->Stop Server.
Creating Project
Exercise 1: Launch AppPerfect Web Test
1. Click on Start -> Programs ->AppPerfect Web Test x.x.x -> AppPerfect Web Test
2. On launching AppPerfect Web Test a Welcome page will be displayed. Go through the brief
description given for product.
NB: Welcome page is displayed only when Web Test x.x.x is launched and last time no
project was opened.
button.
Now using this project we will create tests to demonstrate the functionalities of AppPerfect Web Test
product.
Click on the Stop button of "AppPerfect Recorder" dialog to stop the recording session.
Click on Close button to close the 'AppPerfect Recorder' dialog.
Save project by selecting File->Save menu.
In the AppPerfect Web Test window, look at the tree on the left. Each action you performed
has been recorded.
16. Click on any of the recorded action on the left. The page associated with that action is
displayed along with the actual element highlighted.
6. Click Ok. What this basically does is that when this page loads (on replaying), it will search
the page for the text j2ee and if it is not found, the validation will fail. Since we have
parameterized the username, on the 2nd iteration, the username passed will be john which
does not exist. As a result of which, this page will not replayed as expected and the
validation will fail.
Introduction
The Internet has become the de facto standard means by which most people interact with a vast
majority of software application. This move away from desktop computing to server-side computing
with HTML as the front-end technology has created a whole new class of applications to be built and
delivered to customers.
However, it has also created a new set of challenges in terms of developing and testing these
applications. It is now assumed your customer may be sitting thousands of miles away and working
in a language you are not familiar with.
A second aspect of modern software development methodology is to start testing the software early
and often. Most software developers do not follow the cascading model of development whereby
testing only starts after development ends. Further, developers are being increasingly encouraged
to create vast arrays of unit tests to ensure quality.
AppPerfect Web Test is a comprehensive Web application testing solution that provides all the
features you need, to ensure the reliability of your business-critical applications.
Technologies : AppPerfect Web Test supports testing applications based on .NET, ASP,
Servlets/JSP, CGI, SSL and most other server-side Web technologies. It also supports
advanced Web technologies such as AJAX, Flash and Java Applets.
Browser recording: You can use the browser recording facility to create the tests as you
would normally work with your application. There is no need to learn any proprietary scripting
language. You can then edit and run the test fast and easily. Recording supports JavaScript
dialogs, File Chooser dialogs, Menus, toolbar etc apart from normal HTML elements.
Recording is Component-based and not co-ordinate based allowing to replay test even when
browser is moved or element position changes. Web Test supports recording from multiple
instances of browser simultaneously.
Multiple Browsers Supported: Recording/Replaying is supported on most commonly used
browsers like Internet Explorer, Mozilla Firefox and Safari.
UI based editing of tests: The UI is easy to use and allows you to edit your existing test as
well as add new URLs and parameters to the test. You can quickly modify your tests and
easily build on the Test Cases as and when additional functionality is added to your products
Reduced testing time: As the tests for AppPerfect Web Test are fully automated, you can
save a substantial amount of time and resources that would be spent on trying to test the
system manually. Also errors that might be overlooked during manual testing are caught by
the AppPerfect Web Test and there is no bias in the reporting of errors. AppPerfect Web
Test helps you improve the quality of your Web Applications and drastically reduces the time
it would take to get your product out into the market.
Scripting Support: For advanced user AppPerfect Web Test provides scripting language
support. The scripting language used is simple java script, users can view/edit the test using
script editor provided. Users can customize a test as much as they want using java script.
Parameterize Tests: In real world scenario, for any Web-based application, the pages that
are requested are not all static. In fact, most of the pages accept some parameters as input
and then correspondingly show the appropriate customized content. Parameterize tests feed
these parameters automatically to the request and thus help simulate a more realistic usage
environment. AppPerfect can read values from text files, databases etc.
Response Validation: You can validate the responses received for a URL request with
AppPerfect Web Test. You can customize what constitutes a valid or invalid response for an
URL request.
Support for basic authentication, cookies, SSL: With the AppPerfect Web Test, you can
test URLs that require basic authentication as well as those using HTTPS by allowing the
configuration of the SSL Provider. It also handles the sending of cookies with the appropriate
requests and supports URL rewriting if your application uses it. Two way SSL authentication
is also supported.
Execution without launching browser: AppPerfect Web Test provides support for running
tests without launching browser. Events on all HTML elements is supported in this mode.
Limitation of this mode is that it cannot run window events like events on Applets, Flash,
javascript dialogs, Toolbar buttons, Menu bar etc.
Remote Execution of tests with Central Controller: AppPerfect Web Test provides
support for creation of test on one machine and execution of same remotely on multiple
machines simultaneously. This way you can run functional test from multiple machines and
can control the functional test from one central machine. At the end of execution application
will present the functional testing result of entire functional test as well as individual
machines. This requires AppPerfect Web Test to be installed on remote machines.
Object Spy: AppPerfect Web Test provides functionality to Spy on any HTML element in the
page and fetch its properties. This makes it easier to add any new HTML element to your
existing functional test and build on the Test Cases as and when additional functionality is
added to your product
Importing of tests / groups: AppPerfect Web Test can import a test that has been created
using the AppPerfect Load Test. This makes it easy for a user to create a test instead of
replicating the effort of creating a test. One can also import already recorded groups from
one test to another.
Informative reports: The application provides reports that help you pin point failure points of
the test. These reports are available through the UI and can be exported into different
formats: HTML, PDF, CSV, XLS and XML.
Trend Analysis: AppPerfect Test Manager provides lot of trend reports for trend analysis of
your application. This utility takes multiple result files and generates trend charts and reports
based on the data found. You need AppPerfect Test Manager for trend analysis
Scheduling of tests: You can schedule your tests with AppPerfect Test Manager. You do
not have to be physically present to start the test. The whole process is automated so you
can schedule a test to run in the night and have a look at the results the next day and then
correct any errors found by the test. You need AppPerfect Test Manager for scheduling tests.
Notification of results: You can configure AppPerfect project to notify results using Email or
custom notification mechanism. In case of Email notification you can specify whether you
want results as attachment and AppPerfect will export the results as HTML file and send the
same as attachment with the mail.
IDE Integration: AppPerfect Web Test supports IDE integration with most commonly used
IDEs. This enhances ease-of-use and productivity. Currently supported IDEs are Eclipse,
NetBeans, IntelliJ, JBuilder, JDeveloper, BEA Workshop, IBM RAD, IBM Websphere Studio
etc,.
ANT Integration and Command line execution: AppPerfect Web Test supports ANT
Integration and command line execution so you can functional test your web application by
invoking product by running ANT script or by running bat/sh file.
integrated with popular Java IDEs as well as the project's build process.
Requirements Manager: This module is used to create requirement specifications around which
your tests will be designed and executed. Functional, business, performance, technical and usability
requirements should be defined here to ensure the tests cover all defined criteria.
Test Manager: Once tests have been designed, the Test Manager can be used to manage the
execution of your tests. Automatically running tests on a specific schedule, notification of test
results, saving of test results, etc. can be defined in this module.
Results Manager: Once results for your various tests have run a few iterations, the Results
Manager can be used to manage the archived results. Trend Analysis of multiple results to detect
key quality trends is a key feature of this module. Storage management can also be performed via
this module.
Issues Manager: As tests are run, issues such as defects, enhancements, modifications, etc. will
occur. This module can be used to create and track such issues. This module is designed as a lightweight issues manager that seamlessly integrates with the rest of the server and is not intended to
replace full-featured issues management system.
License Manager: Floating/site licenses are managed using this module. This module acts as the
central manager for issuing and reclaiming floating licenses for the AppPerfect products.
Project
Project Function
Project
If you are creating a Web Test project from scratch without visiting Web Test perspective for a
project then you need to do the following:
1. Register an entry for Web Test in the project file (*.awt). Open the project file present in the
project location with an extension AWT and name same as project name e.g. NewProject.
awt. Add an entry <Product id="com.appperfect.functionaltester.readerwriter"> above the
<Project> tag if such an entry is absent.
2. Creating a new script file with the name same as project and appending "_ft.js" to it. for e.g.
NewProject_ft.js
3. Defining global function calls and declaring project_function. Open the script file in an editor
and add following entries to the file and save it:
importPackage(Packages.com.appperfect.devcommon.script);
importPackage(Packages.com.appperfect.functionaltester.script);
var engine; //Variable to store instance of ScriptEngine Instance
function project_function() // script function for Web Test project NewProject
{
var webtest = engine.createWebTest();
}
This will create a default Web Test project. We will learn more about project_function in the
next section.
function project_function( )
This function configures the Functional Test as a whole. It configures the run settings, no of group
along with group settings. It also defines test parameters. First task is to create the project using
following statement:
var webtest = engine.createWebTest();
There is a restriction that the name of the project variable should be webtest. The script file is
parsed to keep script & UI in synchronization. Once the Functional test is created we will configure it
by calling various APIs on it.
Think time is a duration in seconds which denotes the amount of wait time between each
task while replaying. Depending upon processing of the request at the server end it can be a
significant value which if ignored may result in task timed out during replaying. AppPerfect
Web Test allows you to record the think time during recording and then either ignore or use it
during replaying. It also allows to set default think time for tasks which do not have any
significant think time. Following APIs can be used to configure think time for the tasks in the
test.
void setDefaultThinkTime(int seconds);
void setRecordThinkTime(boolean record);
void setIgnoreThinkTimeWhileReplaying(boolean ignore);
Time Out : To mark a task as timed out if it was unable to fetch a response or was unable to
find the desired element after specified duration we need to set time out duration. This can
be done by using void setTimeOut(int seconds); API.
Cache settings : After one iteration of the test run, it is quite possible that some of the
response may be cached for e.g. image files etc. This will affect next iteration and may not
give real life simulation of task execution. The cache can be cleared before each iteration or
before start of replaying by calling following APIs.
void clearBrowserPrivateData(int when); where 'when' should be one of the following
values:
IWebTest.CLEAR_AT_START_OF_TEST for clearing at start of replaying
IWebTest.CLEAR_AT_START_OF_EVERY_ITERATION for clearing at start
of each iteration
void clearBrowserCache(boolean clear);
void clearBrowserHistory(boolean clear);
void clearCookies(boolean clear);
Save Successful responses : By default only failed task responses and images are saved, In
case you need to also save successful responses use void
setSaveSuccessfulResponseDetails(boolean save); API.
Iteration settings : By default test replays for single iteration. To set number of iterations for
test use void setNoOfIterations(int iterations); API. In case you need to run test for all the
possible paramter combination then use void setIterateTestForAllParameterCombinations
(boolean all); API.
Replaying in Non-UI mode : To replay test without launching browser, use void
setReplayTestInNonUIMode(boolean replayInNonUI); API.
Configuring Database
The steps to configure and register a Database Connection with Web Test are as under:
Defining database ID
Defining database ID
For any interaction with a database of your interest it is very necessary to register the database
along with its properties with AppPerfect Web Test. While registering the database, a unique
database Id needs to be passed as first parameter and any further database interaction through
Web Test should be performed by passing this unique database id. Database can be registered by
calling String setDatabaseConnection( String uniqueDatabaseId, String connectionURL, String
userName, String password, String driverClass, String classPath); API. For e.g.
var database = engine.setDatabaseConnection('Northwind', 'jdbc:oracle:thin:@localhost:1543:
Northwind', 'scott','tiger', 'oracle.jdbc.driver.OracleDriver', 'C:\DatabaseDrivers\ojdbc14.jar');
This will register an Oracle database "Northwind" with database id Northwind and it will return the
database vendor i.e. It will return "Oracle" If the vendor is not a well-know database vendor it will
return "Other"
Quite often the set of values that a parameter can take is not know before hand and its value is
available at runtime by querying a database. This can be achieved by setting the source of the test
parameter as a database instead of specifying the values. You need to define a database ID prior to
using this method which has been explained in previous chapter Defining database ID.
Once the database ID is defined, you can use void setDatabaseDatasource( String parameterName,
String databaseId, int whenToFetch, int noOfRows, String query); API to fetch the values from the
database. The query should be a select query having only 1 column, If the ResultSet contains more
than 1 column values from 1st column will be taken ignoring other columns. You can also specify
when the application should fetch the values from the database by passing appropriate constant as
the 3rd parameter. Possible values are:
IWebGroup.NO_AUTHENTICATION
IWebGroup.FORM_AUTHENTICATION
IWebGroup.BASIC_AUTHENTICATION
IWebGroup.DIGEST_AUTHENTICATION
IWebGroup.NTLM_AUTHENTICATION
User name for any type of authentication should be set by calling void setAuthenticationUserName
(String name, boolean parameterised); API. If user name is parameterised then the second value to
be passed in true and the first parameter is the name of the test parameter. If the user name is not
parameterised then actual user name is passed as the first parameter.
Password for any type of authentication should be set by calling void setAuthenticationPassword
(String password, boolean parameterised); API. If password is parameterised then the second value
to be passed in true and the first parameter is the name of the test parameter. If the password is not
parameterised then actual password is passed as the first parameter.
void setAuthenticationDomainName(String domain); API is called to set the Domain name if the
authentication is of type IWebGroup.DIGEST_AUTHENTICATION.
Finally if the web or application server is configured for authenticating the client based on client
certificates, you need to register client certificates witht eh group by calling following APIs:
void setUseClientSSLAuthentication(boolean flag); to set that group should use client SSL
authentication
void addClientCertificate(String password, String certFilePath); to register a client certificate
for a group
Browser task
URL task
Browser task
A browser task is equivalent to a web browser session. Following operations are possible for a
Browser instance.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'browser'
'browser' is IBrowser task instance, which we got from Creation of a Browser task
returns true if task was executed successfully, returns false if there is any failure
during execution
For ex. var successful = engine.executeBrowser(browser); will execute a Browser task.
void release();
For ex. engine.release(); will release a Browser task.
URL task
A URL task represents reponse for any HTTP/HTTPS request. It basically represents the response
page shown in the web browser as a result of firing any request. Following operations are possible
for a URL instance.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'url'
'iTimeOut' in no of seconds for the task to complete its execution. Few urls may take
long time to respond, sometimes forever, due to various reason like server is not
responding, network failure etc. This could affect the test execution which will never
complete. One can come out of this situation by specifying the no of seconds after
which the task execution will be aborted and its status will be marked as timed out.
For ex. url.setTimeOut(20); will set time out period to 20 seconds.
void setIgnored(boolean bIgnore); where,
'bIgnore' whether task should be ignored during execution. Possible values are true if
task should be ignored, false otherwise.
For ex. url.setIgnored(false); will ignore execution of task.
void setBenchmarkFile(String sFileName); This is helpful for validation purpose to match the
replayed response with the recorded one. where,
'sFileName' is relative file path of the response when this task was recorded. Path is
relative to the project location.
For ex. url.setBenchmarkFile('recorded/2006_12_1_13_39_1_50/ActionGroup1/URL_2.
html');
void setTitle(String sTitle); where,
void setBreakPoint(boolean bBreakPoint); In case breakpoint is set, test will wait for user's
interruption before moving forward. where,
If parameter is parameterised then the value for same should be fetched using following API of
IScriptEngine
'url' is IUrl task instance, which we got from Creation of a URL task
returns true if task was executed successfully, returns false if there is any failure
during execution
For ex. var successful = engine.executeURL(url); will execute a URL task.
void release();
For ex. engine.release(); will release URL task.
WebObject
WebArea
WebButton
WebCheckBox
WebComboBox
WebDivElement
WebEdit
WebFile
WebHiddenField
WebImage
WebInputElement
WebInputButton
WebInputImage
WebLink
WebList
WebListItem
WebPasswordField
WebRadioButton
WebResetButton
WebSpan
WebSubmitButton
WebTable
WebTextArea
WebTextField
WebBrowserElement
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebObject
A WebObject represents a generic HTML element. Apart from Configuring properties for a Web
element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebObject :
Creation of a WebObject
Creation of a WebObject
WebObject element can be created using createWebObject API of IScriptEngine interface. The
return value is an instance of WebObject interface.
For ex. var element = engine.createWebObject(1, 'a', 2); will create a WebObject element on
Top level page with task id 1 and html tag 'a'
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
returns true if event was executed successfully, returns false if there is any failure
during execution
'propertyName' name of the element's attribute for which the value should be fetched.
'propertyValue' value of the attribute against which the comparision should be done.
'timeout' in no. of seconds, time period for which the replayer should wait to get the
expected value
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.wait('innerText', 'AppPerfect', 30); will make replayer to wait till innertext for
this element is not equal to 'AppPerfect', maximum waiting time will be 30 seconds. If
attribute does not receive the expected value in this time period then event will be marked as
timed out.
WebArea
A WebArea represents HTML element with tag 'area'. Apart from Configuring properties for a Web
element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebArea :
Creation of a WebArea
Creation of a WebArea
WebArea element can be created using createWebArea API of IScriptEngine interface. The return
value is an instance of WebArea interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebButton
A WebButton represents HTML element with tag 'button'. Apart from Configuring properties for a
Web element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebButton :
Creation of a WebButton
Creation of a WebButton
WebButton element can be created using createWebButton API of IScriptEngine interface. The
return value is an instance of WebButton interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebCheckBox
A WebCheckBox represents HTML element with tag 'input' and type='checkbox'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebCheckBox :
Creation of a WebCheckBox
Creation of a WebCheckBox
WebCheckBox element can be created using createWebCheckBox API of IScriptEngine interface.
The return value is an instance of WebCheckBox interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.check(); will select the check box.
boolean unCheck(); To deselect a check box
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.unCheck(); will deselect the checkbox.
WebComboBox
A WebComboBox represents HTML element with tag 'select'. Apart from Configuring properties for
a Web element Task, Execution of a Web element task and Release of a Web element task,
following operations/events are supported for a WebComboBox :
Creation of a WebComboBox
Creation of a WebComboBox
WebComboBox element can be created using createWebComboBox API of IScriptEngine interface.
The return value is an instance of WebComboBox interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
For ex. element.getItem(1); will return the second element in the combo.
int getItemsCount(); To get the item count in the Combo box
For ex. element.select(1); will select the second element in the combo.
boolean selectItem(String item); To select specified item in combo, where
'item' is the text representing the item to be selected.
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.selectItem('AppPerfect'); will select 'AppPerfect' item in the combo.
WebDivElement
A WebDivElement represents HTML element with tag 'div'. Apart from Configuring properties for a
Web element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebDivElement :
Creation of a WebDivElement
Creation of a WebDivElement
WebDivElement element can be created using createWebDivElement API of IScriptEngine
interface. The return value is an instance of WebDivElement interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebEdit
A WebEdit represents HTML element with tag 'input' and type='text'. Apart from Configuring
properties for a Web element Task, Execution of a Web element task and Release of a Web
element task, following operations/events are supported for a WebEdit :
Creation of a WebEdit
Creation of a WebEdit
WebEdit element can be created using createWebEdit API of IScriptEngine interface. The return
value is an instance of WebEdit interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(String text); To set the specified text in the input text box, where
For ex. element.set('AppPerfect'); will set 'AppPerfect' as text in the edit box.
boolean submit(); To submit the form
returns true if event was executed successfully, returns false if there is any failure
during execution
WebFile
A WebFile represents HTML element with tag 'input' and type='file'. Apart from Configuring
properties for a Web element Task, Execution of a Web element task and Release of a Web
element task, following operations/events are supported for a WebFile :
Creation of a WebFile
Creation of a WebFile
WebFile element can be created using createWebFile API of IScriptEngine interface. The return
value is an instance of WebFile interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(String text); To set the specified text as the file path, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.submit(); will submit the form.
WebHiddenField
A WebHiddenField represents HTML element with tag 'input' and type='hidden'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebHiddenField :
Creation of a WebHiddenField
Creation of a WebHiddenField
WebHiddenField element can be created using createWebHiddenField API of IScriptEngine
interface. The return value is an instance of WebHiddenField interface.
boolean set(String text); To set the specified text in the element, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.submit(); will submit the form.
WebImage
A WebImage represents HTML element with tag 'img'. Apart from Configuring properties for a Web
element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebImage :
Creation of a WebImage
Creation of a WebImage
WebImage element can be created using createWebImage API of IScriptEngine interface. The
return value is an instance of WebImage interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebInputElement
A WebInputElement represents HTML element with tag 'input'. Apart from Configuring properties for
a Web element Task, Execution of a Web element task and Release of a Web element task,
following operations/events are supported for a WebInputElement :
Creation of a WebInputElement
Creation of a WebInputElement
WebInputElement element can be created using createWebInputElement API of IScriptEngine
interface. The return value is an instance of WebInputElement interface.
boolean set(String text); To set the specified text in the element, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.set('AppPerfect'); will set 'AppPerfect' as text in the element.
WebInputButton
A WebInputButton represents HTML element with tag 'input' and type='button'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebInputButton :
Creation of a WebInputButton
Creation of a WebInputButton
WebInputButton element can be created using createWebInputButton API of IScriptEngine
interface. The return value is an instance of WebInputButton interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebInputImage
A WebInputImage represents HTML element with tag 'input' and type='image'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebInputImage :
Creation of a WebInputImage
Creation of a WebInputImage
WebInputImage element can be created using createWebInputImage API of IScriptEngine interface.
The return value is an instance of WebInputImage interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebLink
A WebLink represents HTML element with tag 'a'. Apart from Configuring properties for a Web
element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebLink :
Creation of a WebLink
Creation of a WebLink
WebLink element can be created using createWebLink API of IScriptEngine interface. The return
value is an instance of WebLink interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebList
A WebList represents ordered/unordered list HTML element. For ordered list tag is 'ol', while for
unordered list tag is 'ul'. Apart from Configuring properties for a Web element Task, Execution of a
Web element task and Release of a Web element task, following operations/events are supported
for a WebList :
Creation of a WebList
Creation of a WebList
WebList element can be created using createWebList API of IScriptEngine interface. The return
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.submit(); will submit the form.
WebListItem
A WebListItem represents HTML element with tag 'li'. Apart from Configuring properties for a Web
element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebListItem :
Creation of a WebListItem
Creation of a WebListItem
WebListItem element can be created using createWebListItem API of IScriptEngine interface. The
return value is an instance of WebListItem interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebPasswordField
A WebPasswordField represents HTML element with tag 'input' and type='password'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebPasswordField :
Creation of a WebPasswordField
Creation of a WebPasswordField
WebPasswordField element can be created using createWebPasswordField API of IScriptEngine
interface. The return value is an instance of WebPasswordField interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(String text); To set the specified password in the password field, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.set('AppPerfect'); will set 'AppPerfect' as password in the password field.
returns true if event was executed successfully, returns false if there is any failure
during execution
WebRadioButton
A WebRadioButton represents HTML element with tag 'input' and type='radio'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebRadioButton :
Creation of a WebRadioButton
Creation of a WebRadioButton
WebRadioButton element can be created using createWebRadioButton API of IScriptEngine
interface. The return value is an instance of WebRadioButton interface.
Once WebRadioButton is created, you can play events on it. Apart from Supported events for a
WebObject, WebRadioButton also supports following events:
WebResetButton
A WebResetButton represents HTML element with tag 'input' and type='reset'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebResetButton :
Creation of a WebResetButton
Creation of a WebResetButton
WebResetButton element can be created using createWebResetButton API of IScriptEngine
interface. The return value is an instance of WebResetButton interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebSpan
A WebSpan represents HTML element with tag 'span'. Apart from Configuring properties for a Web
element Task, Execution of a Web element task and Release of a Web element task, following
Creation of a WebSpan
Creation of a WebSpan
WebSpan element can be created using createWebSpan API of IScriptEngine interface. The return
value is an instance of WebSpan interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebSubmitButton
A WebSubmitButton represents HTML element with tag 'input' and type='submit'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebSubmitButton :
Creation of a WebSubmitButton
Creation of a WebSubmitButton
WebSubmitButton element can be created using createWebSubmitButton API of IScriptEngine
interface. The return value is an instance of WebSubmitButton interface.
present on subframe.
For ex. var element = engine.createWebSubmitButton(1, 2); will create a WebSubmitButton
element on Top level page with task id 1 and html tag 'input'
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WebTable
A WebTable represents Table HTML element with tag 'table'. Apart from Configuring properties for a
Web element Task, Execution of a Web element task and Release of a Web element task, following
operations/events are supported for a WebTable :
Creation of a WebTable
Creation of a WebTable
WebTable element can be created using createWebTable API of IScriptEngine interface. The return
value is an instance of WebTable interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
String getCellData(long row, long column); To get cell data at specified row and column,
where
'row' is the index of row in Table, starts at 0.
'column' is the index of column in Table, starts at 0.
returns cell's data at row, column
For ex. element.getCellData(1, 1); will return the cell's data at second row and second
column in the Table.
long getColumnCount(long row); To get the column count at specified row in the WebTable
WebTextArea
A WebTextArea represents HTML element with tag 'textarea'. Apart from Configuring properties for
a Web element Task, Execution of a Web element task and Release of a Web element task,
following operations/events are supported for a WebTextArea :
Creation of a WebTextArea
Creation of a WebTextArea
WebTextArea element can be created using createWebTextArea API of IScriptEngine interface. The
return value is an instance of WebTextArea interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(String text); To set the specified text in the textarea, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.set('AppPerfect'); will set 'AppPerfect' as text in the textarea.
WebTextField
A WebTextField represents HTML element with tag 'input' and type='textfield'. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebTextField :
Creation of a WebTextField
Creation of a WebTextField
WebTextField element can be created using createWebTextField API of IScriptEngine interface.
The return value is an instance of WebTextField interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(String text); To set the specified text in the element, where
WebBrowserElement
To fire any event on a WebBrowser one need to create WebBrowserElement. Apart from
Configuring properties for a Web element Task, Execution of a Web element task and Release of a
Web element task, following operations/events are supported for a WebBrowserElement :
Creation of a WebBrowserElement
Creation of a WebBrowserElement
WebBrowserElement element can be created using createWebBrowserElement API of
IScriptEngine interface. The return value is an instance of WebBrowserElement interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.back(); will move to previous page in WebBrowser.
boolean home(); To move to home page in the WebBrowser
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.home(); will move to home page in WebBrowser.
boolean forward(); To move to next page in the WebBrowser
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.forward(); will move to next page in WebBrowser.
returns true if event was executed successfully, returns false if there is any failure
during execution
'bExactMatch' is true if all the attributes for the event are to matched exactly as they
are; false otherwise.
For ex. element.setExactMatchForAttributesComparision(false);
void setTitle(String sTitle); where,
If attribute is parameterised then the value for same should be fetched using following API of
IScriptEngine
void release();
For ex. engine.release(); will release Web element task.
WinObject
WinApplet
WinButton
WinCalendar
WinCheckBox
WinComboBox
WinEdit
WinFlash
WinListBox
WinListView
WinMenu
WinRadioButton
WinScrollBar
WinSpin
WinStatic
WinStatusBar
WinTab
WinToolbar
WinTreeView
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinObject
A WinObject represents a generic Window element. Apart from Configuring properties for a Window
element Task, Execution of a Window element task and Release of a Window element task,
following operations/events are supported for a WinObject :
Creation of a WinObject
Creation of a WinObject
WinObject element can be created using createWinObject API of IScriptEngine interface. The return
value is an instance of WinObject interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
For ex. element.dblClick(24, 36); will replay double click event on element.
boolean mouseMove(int x, int y); To replay a mouse move on element, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.drag(24, 36); will replay a drag event on element.
boolean drop(int x, int y); To replay a drop event on element, where
boolean vScroll(int option, int item); Vertically scrolls an object that has embedded scrollbars,
where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.vScroll(1, 2); will scroll 2 lines up.
boolean hScroll(int option, int item); Horizontally scrolls an object that has embedded
scrollbars, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.type('AppPerfect', false); will type 'AppPerfect' text in the object.
boolean maximize(); Maximizes the window to fill the entire screen.
returns true if event was executed successfully, returns false if there is any failure
during execution
returns true if event was executed successfully, returns false if there is any failure
during execution
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.activate();
boolean close(); Closes the window.
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.close();
boolean wait(String propertyName, String propertyValue, long timeout); Will make replayer
wait till specified property recieves specified value or till the specified time out period,
whatever happens earlier, where
'propertyName' name of the element's attribute for which the value should be fetched.
'propertyValue' value of the attribute against which the comparision should be done.
'timeout' in no. of seconds, time period for which the replayer should wait to get the
expected value
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.wait('innerText', 'AppPerfect', 30); will make replayer to wait till innertext for
this element is not equal to 'AppPerfect', maximum waiting time will be 30 seconds. If
attribute does not receive the expected value in this time period then event will be marked as
timed out.
WinApplet
A WinApplet represents window element with class 'SunAwtCanvas'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinApplet :
Creation of a WinApplet
Creation of a WinApplet
WinApplet element can be created using createWinApplet API of IScriptEngine interface. The return
value is an instance of WinApplet interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinButton
A WinButton represents window element with class 'Button'. Apart from Configuring properties for a
Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinButton :
Creation of a WinButton
Creation of a WinButton
WinButton element can be created using createWinButton API of IScriptEngine interface. The return
value is an instance of WinButton interface.
For ex. var element = engine.createWinButton(1, 2); will create a WinButton element on Top
level page with task id 1 and class 'Button'
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinCalendar
A WinCalendar represents window element with class 'CalWndMain'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinCalendar :
Creation of a WinCalendar
Creation of a WinCalendar
WinCalendar element can be created using createWinCalendar API of IScriptEngine interface. The
return value is an instance of WinCalendar interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinCheckBox
A WinCheckBox represents window element with class 'Button'. Apart from Configuring properties
for a Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinCheckBox :
Creation of a WinCheckBox
Creation of a WinCheckBox
WinCheckBox element can be created using createWinCheckBox API of IScriptEngine interface.
The return value is an instance of WinCheckBox interface.
For ex. var element = engine.createWinCheckBox(1, 2); will create a WinCheckBox element
on Top level page with task id 1 and class 'Button'
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
WinComboBox
A WinComboBox represents window element with class 'ComboBox'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinComboBox :
Creation of a WinComboBox
Creation of a WinComboBox
WinComboBox element can be created using createWinComboBox API of IScriptEngine interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
For ex. element.getItem(1); will return the second element in the combo.
int getItemsCount(); To get the item count in the Combo box
WinEdit
A WinEdit represents window element with class 'Edit'. Apart from Configuring properties for a
Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinEdit :
Creation of a WinEdit
Creation of a WinEdit
WinEdit element can be created using createWinEdit API of IScriptEngine interface. The return
value is an instance of WinEdit interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(String text); To set the specified text in the Edit box, where
'text' is the text to set in Edit box.
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.set('AppPerfect'); will set 'AppPerfect' in the Edit box
boolean setCaretPos(int row, int column); Places the cursor at the specified point in the edit
box, where
'row' is the The zero-based row position (in lines) at which the insertion point is placed.
'column' is the The zero-based column position (in characters in the specified row) at
which the insertion point is placed.
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.setCaretPos(2, 3); will place cursor at 4th character in third line of Edit Box.
boolean setSelection(int columnFrom, int columnTo); Selects text in the edit box, where
'columnFrom' is the zero-based column at which the selection starts (in characters).
'columnTo' is the zero-based column at which the selection ends (in characters).
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.setSelection(2, 3); will select text from 3rd to 4th character.
WinFlash
A WinFlash represents window element with class 'MacromediaFlashPlayerActiveX'. Apart from
Configuring properties for a Window element Task, Execution of a Window element task and
Release of a Window element task, following operations/events are supported for a WinFlash :
Creation of a WinFlash
Creation of a WinFlash
WinFlash element can be created using createWinFlash API of IScriptEngine interface. The return
value is an instance of WinFlash interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinListBox
A WinListBox represents window element with class 'ListBox'. Apart from Configuring properties for
a Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinListBox :
Creation of a WinListBox
Creation of a WinListBox
WinListBox element can be created using createWinListBox API of IScriptEngine interface. The
return value is an instance of WinListBox interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean extendSelect(int index); To select an additional item in multiselect list box, where
'index' is the position of additional item to be selected in ListBox, starts at 0.
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.extendSelect(1);
boolean extendSelectItem(String item); To select an additional item in multiselect list box,
where
WinListView
A WinListView represents windows list view control with class 'SysListView32'. Apart from
Configuring properties for a Window element Task, Execution of a Window element task and
Release of a Window element task, following operations/events are supported for a WinListView :
Creation of a WinListView
Creation of a WinListView
WinListView element can be created using createWinListView API of IScriptEngine interface. The
return value is an instance of WinListView interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.select(1); will select the second element in the ListView.
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.deSelect(1); will deselect the second element in the ListView.
WinMenu
A WinMenu represents windows menu bar. Apart from Configuring properties for a Window element
Task, Execution of a Window element task and Release of a Window element task, following
operations/events are supported for a WinMenu :
Creation of a WinMenu
Creation of a WinMenu
WinMenu element can be created using createWinMenu API of IScriptEngine interface. The return
value is an instance of WinMenu interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
Once WinMenu is created, you can play events on it. WinMenu supports following events :
'menuPath' specifies the complete path of the menu item, separate each item with a
semicolon (;)
'isContextMenu' is true if its a context menu, false otherwise
'selectByCommand' is true if item should be selected using command identifier, false
otherwise
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.selectItem('&Help;&About Notepad', false, true); will select the specified
menu item
boolean wait(String propertyName, String propertyValue, long timeout); Will make replayer
wait till specified property recieves specified value or till the specified time out period,
whatever happens earlier, where
'propertyName' name of the element's attribute for which the value should be fetched.
'propertyValue' value of the attribute against which the comparision should be done.
'timeout' in no. of seconds, time period for which the replayer should wait to get the
expected value
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.wait('innerText', 'AppPerfect', 30); will make replayer to wait till innertext for
this element is not equal to 'AppPerfect', maximum waiting time will be 30 seconds. If
attribute does not receive the expected value in this time period then event will be marked as
timed out.
WinRadioButton
A WinRadioButton represents window element with class 'Button'. Apart from Configuring properties
for a Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinRadioButton :
Creation of a WinRadioButton
Creation of a WinRadioButton
WinRadioButton element can be created using createWinRadioButton API of IScriptEngine
interface. The return value is an instance of WinRadioButton interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
WinScrollbar
A WinScrollbar represents window element with class 'Scrollbar'. Apart from Configuring properties
for a Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinScrollbar :
Creation of a WinScrollbar
Creation of a WinScrollbar
WinScrollbar element can be created using createWinScrollbar API of IScriptEngine interface. The
return value is an instance of WinScrollbar interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.prevPage(1);
WinSpin
A WinSpin represents window element with class 'msctls_updown32'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinSpin :
Creation of a WinSpin
Creation of a WinSpin
WinSpin element can be created using createWinSpin API of IScriptEngine interface. The return
value is an instance of WinSpin interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
boolean set(int position); Sets the spin object to the specified value, where
WinStatic
A WinStatic represents window element with class 'Static'. Apart from Configuring properties for a
Window element Task, Execution of a Window element task and Release of a Window element
task, following operations/events are supported for a WinStatic :
Creation of a WinStatic
Creation of a WinStatic
WinStatic element can be created using createWinStatic API of IScriptEngine interface. The return
value is an instance of WinStatic interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinStatusBar
A WinStatusBar represents window element with class 'msctls_statusbar32'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinStatusBar :
Creation of a WinStatusBar
Creation of a WinStatusBar
WinStatusBar element can be created using createWinStatusBar API of IScriptEngine interface. The
return value is an instance of WinStatusBar interface.
For ex. var element = engine.createWinStatusBar(1, 2); will create a WinStatusBar element
on Top level page with task id 1 and class 'msctls_statusbar32'
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
WinTab
A WinTab represents window element with class 'SysTabControl32'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinTab :
Creation of a WinTab
Creation of a WinTab
WinTab element can be created using createWinTab API of IScriptEngine interface. The return
value is an instance of WinTab interface.
For ex. element.selectItem('AppPerfect'); will select 'AppPerfect' item in the Tab control.
WinToolbar
A WinToolbar represents window element with class 'ToolbarWindow32'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinToolbar :
Creation of a WinToolbar
Creation of a WinToolbar
WinToolbar element can be created using createWinToolbar API of IScriptEngine interface. The
return value is an instance of WinToolbar interface.
For ex. var element = engine.createWinToolbar(1, 2); will create a WinToolbar element on
Top level page with task id 1 and class 'ToolbarWindow32'
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
For ex. element.getItem(1); will return the second element in the Toolbar control.
int getItemsCount(); To get the item count in the Toolbar control
For ex. element.select(1); will select the second element in the Toolbar control.
boolean selectItem(String item); To select specified item in Toolbar control, where
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.selectItem('AppPerfect'); will select 'AppPerfect' item in the Toolbar control.
WinTreeView
A WinTreeView represents window element with class 'SysTreeView32'. Apart from Configuring
properties for a Window element Task, Execution of a Window element task and Release of a
Window element task, following operations/events are supported for a WinTreeView :
Creation of a WinTreeView
Creation of a WinTreeView
WinTreeView element can be created using createWinTreeView API of IScriptEngine interface. The
return value is an instance of WinTreeView interface.
In order to keep the changes in UI and script in sync with each other, the name of the variable has
to be 'element'
For ex. element.getSelectedItems(); will return the selected items in TreeView control
boolean selectItem(String nodePath); To select specified item in TreeView control, where
'nodePath' is the text representing the complete path of tree item to be selected. Each
item is separated by a semicolon (;)
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.selectItem('AppPerfect;Web Test');
boolean collapse(String nodePath); To collapse the specified node in TreeView control,
where
'nodePath' is the text representing the complete path of tree item to be collapsed.
Each item is separated by a semicolon (;)
returns true if event was executed successfully, returns false if there is any failure
during execution
'nodePath' is the text representing the complete path of tree item to be expanded.
Each item is separated by a semicolon (;)
returns true if event was executed successfully, returns false if there is any failure
during execution
For ex. element.expandAll('AppPerfect;Web Test');
'iThinkTime' is wait time in no. of seconds for which the engine should wait before the
task is actually executed.
For ex. element.setThinkTime(10); will set think time to 10 seconds.
void setIgnored(boolean bIgnore); where,
'bIgnore' whether task should be ignored during execution. Possible values are true if
task should be ignored, false otherwise.
For ex. element.setIgnored(false); will ignore execution of task.
void setRecordedWhileShowingSSLCertificate(boolean flag); This method should be called
to mark event as an event on SSL certificate dialog. where,
'flag' is true if this event is an event on SSL certificate dialog; false otherwise.
For ex. element.setRecordedWhileShowingSSLCertificate(false);
'sImagePath' is file path of the element's image saved on disk. Path is relative to the
project location.
For ex. element.setImagePath('recorded/2006_12_1_13_39_1_50/ActionGroup1/
appftimage0.jpeg');
void setBreakPoint(boolean bBreakPoint); In case breakpoint is set, test will wait for user's
interruption before moving forward. where,
'bBreakPoint' is true if breakpoint should be set; false otherwise.
For ex. element.setBreakPoint(false); will clear breakpoint.
void addAttribute(String sAttributeName, String sAttributeValue, boolean bIgnore, boolean
bValidate); Each Window Element has a set of attributes, which are used to find the desired
element during execution. where,
If attribute is parameterised then the value for same should be fetched using following API of
IScriptEngine
void release();
For ex. engine.release(); will release Window element task.
WebResponse getWebResponse(); Once the task is executed, this method returns the
contents of the response received. This can be null whenthere is no response from the
server, typically when the request is re-directed to some other URL or the server, requests
for authentication information etc.
boolean isValidationSuccessful(); Once the task is executed, this method returns the status
of the validation carried out.
void setValidationSuccessful(boolean success); Once the task is executed, this method can
be used to set the status of validation.
IValidationResult getValidationResult(); Once the task is executed, detailed validation result
can be fetched using this method.
boolean assertNodeText(String description, String nodePath, String text); Once the task is
executed, text of the node in the DOM tree of the response data can be validated.
boolean assertNodeAttributeValue(String description, String nodePath, String attributeName,
String attributeValue); Once the task is executed, attributes of the node in the DOM tree of
the response data can be validated.
boolean assertInDatabase(String description, String databaseId, String query); Once the task
is executed, database can be validated by firing the specified SELECT query.
boolean assertTodaysDate(String description, String dateFormat, String prefix, String suffix);
Once the task is executed, response can be validated to contain today's date in specified
format.
boolean assertTodaysDate(String description, String dateFormat); Once the task is
executed, response can be validated to contain today's date in predefined format.
boolean assertText(String description, String[] txt, boolean bCaseSensitive, boolean
contains, boolean bAll, boolean checkForExistance, boolean regularExpression, String
prefix, String suffix); Once the task is executed, response can be validated for presence/
absence of some text along with other attributes for fine-tuning the search.
boolean assertText(String description, String txt, boolean bCaseSensitive, boolean
checkForExistance, boolean regularExpression, String prefix, String suffix); Once the task is
executed, response can be validated for presence/absence of some text along with other
attributes for fine-tuning the search.
boolean assertText(String description, String[] txt, boolean bCaseSensitive, boolean
contains, boolean bAll, boolean checkForExistance, boolean regularExpression); Once the
task is executed, response can be validated for presence/absence of some text along with
other attributes for fine-tuning the search.
boolean assertText(String description, String txt, boolean bCaseSensitive, boolean
checkForExistance, boolean regularExpression); Once the task is executed, response can
be validated for presence/absence of some text along with other attributes for fine-tuning the
search.
boolean assertPage(String description); Once the task is executed, the response page can
be validated using this method.
boolean assertLinkCount(String description, int count); Once the task is executed, no of links
in the response can be validated using this method.
boolean assertFormCount(String description, int count); Once the task is executed, no of
forms in the response can be validated using this method.
boolean assertImageCount(String description, int count); Once the task is executed, no of
images in the response can be validated using this method.
boolean assertInputElementCount(String description, int count); Once the task is executed,
no of input elements in the response can be validated using this method.
boolean assertPageSize(String description, long sizeInBytes); Once the task is executed,
size of the response can be validated using this method.