Skip to main content

Getting Started with Table Extraction

This document describes the complete workflow for using the Table Extraction activity: opening the wizard, indicating the table, configuring columns, setting up pagination, and configuring advanced parameters in the Properties panel.


1. Overview​

Table Extraction is an activity that extracts tabular data from an application's UI (Web Browser, Windows Desktop, Java…) and stores the result in a DataTable.

Key capabilities:

  • Extract single-page or multi-page tables (via a Next/Pagination button).
  • Configure the data type of each column (Text, Number, Boolean).
  • Limit extraction by number of rows or number of pages.

2. Add the Activity to a Workflow​

To add the activity, follow this workflow: akaBot Studio > Toolbox (Search: Table Extraction) > Drag & Drop into workflow > Click Open Table Extraction.

table-extraction.png

[!IMPORTANT] TargetElement is a required argument. If no table has been indicated, the activity will raise a validation error at runtime.


3. Open the Table Extract Tool (Wizard)​

To open the configuration wizard (Table Extract Tool):

  • Click the "Open Table Extraction" button on the activity body.

The wizard opens as a Table Extraction Wizard positioned at the Top corner of the screen so it does not obscure the target application. At this point:

table-extraction-wizard.png

  • akaBot Studio is minimized to the Taskbar.
  • You must switch to the target application (browser, desktop software…) before clicking Indicate.

4. Step 1 – Indicate the Table Element​

4.1. Click "Indicate Table Element"​

In the wizard, click the "Indicate Table Element" button.

  • The wizard minimizes to free up the screen.
  • The cursor enters Inspect mode — hovering over elements highlights them.

4.2. Select the Table Element​

Move the cursor to the table element in the target application and click:

  • Web: Click on a table that contains tabular data or a header of table.
  • Windows Desktop / Java: Click on a grid or table control.

indicate-table-element.png

5. Step 2 – Review & Configure Columns​

After a successful Indicate, the wizard displays a list of detected columns from the table:

FieldDescription
IsSelectedCheckbox to include or exclude the column from the output DataTable.
Column NameName read from the table header (first row). Can be renamed.
Settings (⚙)Settings button to configure table columns (data type, preview data).

table-extraction-wizard-indicate-element.png

5.1. Select / Unselect a Column​

  • Uncheck a column's checkbox → the column is Unselected from the output DataTable
  • Check to keep the column.

5.2. Configure DataType​

Click the Settings (⚙) icon next to a column to open the detailed configuration panel:

DataType = Text (default)​

  • No additional settings required.
  • Values are stored as string.

DataType = Number​

ParameterDefaultDescription
Decimal Separator.Character used as the decimal point (e.g., . or ,).
Thousands Separator,Character used as the thousands delimiter (e.g., , or .).
Allow NullfalseIf enabled, values that fail to parse are stored as null.
Default Value""Fallback value when parsing fails (if Allow Null is off).

DataType = Boolean​

ParameterDefaultDescription
True Valuestrue,yes,1,okeComma-separated list of values to interpret as true.
False Valuesfalse,no,0Comma-separated list of values to interpret as false.
Allow NullfalseAllow null when the value does not match any entry.
Default Value""Fallback value when parsing fails.

Parse failure behavior:

Allow NullDefault ValueResult
false(empty)Throws an exception
false0Uses 0
truenullStores DBNull
true0Uses 0

[!TIP] Click the "Preview" button in the wizard to view all extracted data as a table before confirming.


6. Step 3 – Configure the Next Button (Pagination)​

The Next Button section (collapsible) configures the "Next page" button so the activity can automatically page through a multi-page table and merge all results.

Click "Indicate Next Link" in the wizard.

  • The wizard minimizes. Click the pagination button in the target application (e.g., >, Next, »).
  • The system generates:
    • A Strict Selector for the button.
    • A Fuzzy Selector for the button.
    • An Image Selector (a screenshot of the button stored as base64).

indicate-next-button.png

Each selector type has a checkbox to enable/disable it and an Accuracy slider (0.0 → 1.0, default 0.5).

[!TIP] If the pagination button has dynamic attributes that change on every page (e.g., dynamic IDs), you can manually edit the generated Strict or Fuzzy selector in the Properties panel after closing the wizard, and replace the dynamic parts with a wildcard (*).

6.2. Pagination Stop Conditions​

The activity automatically stops paginating when any of the following conditions is met:

  • The Next button is not found (ElementNotFoundException) → normal stop.
  • The Next button is in a disabled state (disabled attribute, class contains disabled, aria-disabled=true, or aastate=unavailable).
  • The data on the new page is identical to the previous page (prevents infinite loops).
  • The configured row or page limit has been reached (see Properties below).

7. Confirm & Close the Wizard​

Once configuration is complete:

  • Confirm: Saves all settings (selectors, column settings, extract metadata) back into the activity. The wizard closes.
  • Cancel: Discards all changes and exits the wizard. Existing configuration is unaffected.

[!WARNING] Clicking Cancel will discard all changes made since the wizard was opened. Always click Confirm to save.


8. Properties Panel Reference​

After closing the wizard, open the activity's Properties panel to configure additional runtime parameters.

8.1. Input — Required​

PropertyTypeDescription
TargetElementTarget[Required] Selector for the table element. Auto-populated by the wizard.

8.2. Input — Optional​

PropertyTypeDefaultDescription
NextButtonTargetTarget(empty)Selector for the pagination button. Leave empty for single-page tables.
LimitExtractionToExtractionLimitTypeNoLimitExtraction limit mode: NoLimit, MaxRows, or MaxPages.
NumberOfItemsInt321000 (rows) / 200 (pages)Maximum rows or pages to extract. Required when LimitExtractionTo ≠ NoLimit.
DelayBeforeInt32 (ms)200Wait time before execution begins (ms). Must be ≥ 0.
DelayAfterInt32 (ms)300Wait time after execution completes (ms). Must be ≥ 0.
DelayBetweenPagesInt32 (ms)0Wait time between page clicks when paginating. Must be ≥ 0.
TimeoutMSInt32 (ms)30000Overall timeout for the entire activity. Must be ≥ 3000 ms.
ContinueOnErrorBooleanfalseIf true, errors are silently logged and execution continues.

8.3. Input / Output​

PropertyTypeDescription
DestinationDataTableDataTableThe DataTable to receive results. If a pre-existing DataTable is passed in, new rows are merged into it.

8.4. Input — Auto-Generated​

PropertyDescription
ExtractMetadataXML metadata describing the extraction structure (column names, attributes, CSS selectors…). Auto-generated by the wizard.
TableSettingsXML table configuration (column types, data types, names, selection state). Auto-generated by the wizard.

[!CAUTION] It is highly recommended not to manually edit ExtractMetadata or TableSettings unless you are resolving a specific table structure mismatch (see the Troubleshooting section below). Incorrect changes can break the extraction logic.


9. Default Values & Validation Rules​

Validation Errors (Build / Runtime)​

ConditionError
TargetElement not configuredRequired validation error
LimitExtractionTo ≠ NoLimit but NumberOfItems is null"Please specify the number of items when the extraction limit type is set to {type}"
NumberOfItems ≤ 0"Value must be greater than 0"
TimeoutMS < 3000"TimeoutMS must be ≥ 3000"
DelayBefore < 0"DelayBefore must be ≥ 0"
DelayAfter < 0"DelayAfter must be ≥ 0"
DelayBetweenPages < 0"DelayBetweenPages must be ≥ 0"

Internal Defaults (When Not Set)​

PropertyInternal Default
DelayBefore200 ms
DelayAfter300 ms
DelayBetweenPages0 ms
TimeoutMS30000 ms (Constants.TimeoutMS)
LimitExtractionToNoLimit
NumberOfItems1000 (MaxRows mode) / 200 (MaxPages mode)

Design-Time vs Runtime Table Structure Mismatch​

Problem​

The Table Extraction activity relies on the underlying XML metadata generated during the initial setup. If the target application alters its layout—such as reordering, renaming, or inserting new columns—the pre-configured selectors and metadata will no longer align with the live DOM structure.

Simply put, a mismatch occurs when the table structure changes between when the activity was configured (design time) and when the automation actually runs (runtime).

Expected Structure (Design Time): table-extract-design-time.png

Actual Structure (Runtime): table-extraction-runtime.png

This discrepancy breaks the extraction mapping, leading to incomplete DataTables or runtime exceptions.

Fix — Clear the Column Definitions from TableSettings​

The safest workaround is to remove all <Column> child nodes from the TableSettings XML. This forces the activity to accept whatever column structure the live table provides at runtime, without trying to match against stale design-time definitions.

Step-by-step:

  1. In the activity's Properties panel, locate the TableSettings property.
  2. Click the expression editor button (...) to open the raw XML value.
  3. Find the <Table ...> root element. It will look similar to:
<Table>
<Column Name='id' ReferenceIdx='0' DataType='Number' DecimalSeparator='.' ThousandsSeparator=',' AllowNull='false' DefaultValue='' />
<Column Name='First Name' ReferenceIdx='1' DataType='Text' />
<Column Name='Last Name' ReferenceIdx='2' DataType='Text' />
<Column Name='Product Name' ReferenceIdx='3' DataType='Text' />
<Column Name='Quantity' ReferenceIdx='4' DataType='Number' DecimalSeparator='.' ThousandsSeparator=',' AllowNull='false' DefaultValue='' />
<Column Name='Price' ReferenceIdx='5' DataType='Number' DecimalSeparator='.' ThousandsSeparator=',' AllowNull='false' DefaultValue='' />
<Column Name='Total' ReferenceIdx='6' DataType='Number' DecimalSeparator='.' ThousandsSeparator=',' AllowNull='false' DefaultValue='' />
</Table>
  1. Delete all <Column>...</Column> child nodes, leaving only the <Table> root element:
<Table>
</Table>
  1. Save the change and run the automation again.

10. Next Steps​

After successfully extracting the table, the data is stored in memory as a DataTable variable. You can use standard data manipulation activities to process it, or write it directly to a file:

  • Use Write Range (Excel) to export the DataTable to an Excel spreadsheet.
  • Use Write CSV File to export the DataTable to a CSV file.