03 Automation reference
VIDA 2014D was built to be clicked by a technician, not scripted. This is the map that makes it scriptable: 307 addressable elements across every screen — each with its DOM identifier where one exists, and its measured position on screen where one doesn’t.
01 Capture conditions
Screen positions mean nothing without the window state they were measured in. DOM identifiers survive anything; pixels do not.
Restore the window down instead of maximising and the tab row scrolls out of reach entirely — every pixel figure on this page becomes wrong.
Captured 2026-07-30 / 2026-07-31, signed in with a vehicle identified. Several controls only exist once a profile is loaded.
S60 (11-) 2015A B4204T11 TG-81SC LHD VIN YV140MFB0F2303627
Method. DOM read via Shell.Application COM + javascript: injection, chunked back through document.title; pixel coordinates read from labelled grid screenshots.
02 Cold start
Verified end-to-end: logged out, then drove the whole flow back to an identified vehicle purely through the DOM. No AutoHotkey, no pixels, run from SSH.
fireEvent, not .click()IE's fireEvent('onclick') is what actually drives VIDA. Setting .value or calling .click() puts text on screen but does NOT fire VIDA's handlers. For RADIOS you need BOTH e.checked=true AND e.fireEvent('onclick'). The searchButton and all INFORMATION menu items need a REAL pixel click - neither method reaches them.
| # | step | how | confirm it worked |
|---|---|---|---|
| 1 | Go to the app root | goto.ps1 -url http://localhost/Vida/ |
document.title == 'VIDA' |
| 2 | Log in | getElementById('usernameId').value='admin'; getElementById('loginId').click() |
title becomes 'VIDA - VIDA2014D, en-US' |
| 3 | Open the vehicle picker | click_text.ps1 -text 'Define vehicle profile' |
docFrame src = /Vida/vehicleProfileTabAction.do |
| 4 | Pick a known vehicle | recent-VIN radio: fireEvent('onclick') |
vehicleModelSelect and modelYearSelect become non-empty |
| 5 | Confirm | okId: fireEvent('onclick') |
top.profile == the VIN; partnerGroup flips INT -> AME |
getElementById('logOutLinkId').click()
navigates to /Vida/LogOut.do, a terminal page reading 'Close dialog to logout.' Session is dead; navigate back to /Vida/ for the login page.
03 Global chrome
The header and tab row are ordinary HTML in the top document. Every one carries a real DOM
id, so drive them by identifier — getElementById('searchTab').click()
— and they never break when the window moves.
| DOM id | class | label | x,y | w×h |
|---|---|---|---|---|
loginId |
actionbutton | Log in | 1040,670 | 64×13 |
computerRegistrationWizard |
actionbutton | Registration guide for subscription | 800,711 | 289×13 |
usernameId |
text | 1011,622 | 118×19 | |
| — | headerbutton | Report errors | 65,76 | 126×13 |
vehicleDetail |
headerbutton | Vehicle details | 71,89 | 137×13 |
| — | headerbutton | Help | 30,102 | 56×13 |
logOutLinkId |
headerbutton | Log out | 1196,78 | 79×13 |
startTab |
navigationchoosen | Start | 305,109 | 45×13 |
vehicleProfileTab |
navigation | Vehicle profile | 441,109 | 116×13 |
informationTab |
navigation | Information | 644,109 | 95×13 |
workListTab |
navigation | Work list | 813,109 | 74×13 |
diagnosticTab |
navigation | Diagnostics | 970,109 | 93×13 |
softwareTab |
navigation | Software | 1136,109 | 74×13 |
searchTab |
navigation | Search | 1272,109 | 54×13 |
The active tab carries class="navigationchoosen"; the rest are
navigation.
top.choosenTab — current tab slug ('diagnostics', 'softwareDownload', 'vehicleProfile', 'start', ...) top.profile — identified VIN, or absent when no vehicle is loaded document.cookie — JSESSIONID=<id>.undefined - required for any direct HTTP fetch; without it every URL returns a ~493-byte login stub
All page content renders inside a single iframe, id="docFrame". Everything below
is measured inside that frame, in screen coordinates.
04 Form bindings
Verified from the live DOM: element name, accepted values, and what each means. Set these instead of clicking pixels.
searchCategory
2 = Parts · 1 = Repair · 4 = Product specifications · 3 = Fault tracing · 5 = Bulletins · 99 = CSC · -1 = All information except parts catalog · 6 = VCC Id
CORRECTED 2026-07-31: the adaptation-reset routines are NOT under 3 (Fault tracing) - that returns only 'Diagnostic trouble code (DTC) information ECM-Pxxxxxx' documents. Use -1 and search 'Resetting adaptations' (2 hits).
searchAll
true = All words · false = Any word
Default is Any, which matches on 'and'/'for' and caps at 200 results. Always set true.
profileFilterOn
true = Vehicle profile filter On · false = Off
partsSearchStringType
2 = Part description · 1 = Part number
partsSearchResultType
1 = Show results by Part · 2 = by Section
includeNotes
on = Include notes (checkbox)
05 Per screen
Each tab opened by its DOM id and re-read. Controls are inputs, links, buttons and
selects. Clickable are elements bound with attachEvent or carrying a pointer
cursor — menu rows and tree nodes that aren’t anchors but still respond.
· 3 controls,
0 clickable, of 4 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | loginId |
Log in | 1040,670 | 64×13 |
| A | — | computerRegistrationWizard |
Registration guide for subscription | 800,711 | 289×13 |
| INPUT | text | usernameId |
— | 1011,622 | 118×19 |
· 4 controls,
0 clickable, of 19 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | .actionbutton | Define vehicle profile | 139,281 | 188×13 |
| A | — | .actionbutton | Perform computer settings | 157,360 | 223×13 |
| A | — | .headerbutton | Copyright | 1047,486 | 97×13 |
| A | — | .headerbutton | Conditions | 1043,499 | 105×13 |
· 16 controls,
5 clickable, of 67 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | clearVehicleProfile |
Clear vehicle profile | 622,483 | 180×13 |
| A | — | okId |
OK | 865,483 | 41×13 |
| INPUT | text | — | — | 78,309 | 112×22 |
| INPUT | text | — | — | 202,309 | 112×22 |
| INPUT | radio | — | YV140MFB0F2303627,1001, | 36,570 | 20×20 |
| INPUT | radio | — | YV1LZ56DXY2736349,1003, | 36,594 | 20×20 |
| INPUT | radio | — | YV1AS982272017437,1003, | 36,618 | 20×20 |
| INPUT | radio | — | YV1AS982271017437,1003, | 36,642 | 20×20 |
| SELECT | select-one | vehicleModelSelect |
XC90XC70 (08-)XC60V90V70 XC (01-) / XC70 (-0 | 122,406 | 200×22 |
| SELECT | select-one | modelYearSelect |
— | 302,406 | 140×22 |
| SELECT | select-one | vinPartnerGroup |
AME INT, Arabia and China EUR/INT, except Ara | 654,406 | 244×22 |
| SELECT | select-one | engineSelect |
122,445 | 200×22 | |
| SELECT | select-one | transmissionSelect |
302,445 | 140×22 | |
| SELECT | select-one | steeringSelect |
452,445 | 140×22 | |
| SELECT | select-one | bodySelect |
602,445 | 140×22 | |
| SELECT | select-one | specialVehicleSelect |
811,445 | 107×22 | |
| DIV | — | — | Vehicle profile | 76,131 | 127×13 |
| TR | — | recentVinRow |
S60 (11-)2015AYV140MFB0F2303627 | 421,570 | 796×22 |
| TR | — | recentVinRow |
V70 XC (-00)2000YV1LZ56DXY2736349 | 421,594 | 796×22 |
| TR | — | recentVinRow |
S80 (07-)2007YV1AS982272017437 | 421,618 | 796×22 |
| TR | — | recentVinRow |
S80 (07-)2007YV1AS982271017437 | 421,642 | 796×22 |
· 16 controls,
6 clickable, of 68 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | clearVehicleProfile |
Clear vehicle profile | 622,483 | 180×13 |
| A | — | okId |
OK | 865,483 | 41×13 |
| INPUT | text | — | YV140MFB0F2 | 78,309 | 112×22 |
| INPUT | text | — | 303627 | 202,309 | 112×22 |
| INPUT | radio | checkedRadioVin |
on | 36,570 | 20×20 |
| INPUT | radio | checkedRadioVin |
on | 36,594 | 20×20 |
| INPUT | radio | checkedRadioVin |
on | 36,618 | 20×20 |
| INPUT | radio | checkedRadioVin |
on | 36,642 | 20×20 |
| SELECT | select-one | vehicleModelSelect |
S60 (11-) | 122,406 | 200×22 |
| SELECT | select-one | modelYearSelect |
2015A | 302,406 | 140×22 |
| SELECT | select-one | vinPartnerGroup |
AME INT, Arabia and China EUR/INT, except Ara | 654,406 | 244×22 |
| SELECT | select-one | engineSelect |
B4204T11 | 122,445 | 200×22 |
| SELECT | select-one | transmissionSelect |
TG-81SC | 302,445 | 140×22 |
| SELECT | select-one | steeringSelect |
L.H.D | 452,445 | 140×22 |
| SELECT | select-one | bodySelect |
602,445 | 140×22 | |
| SELECT | select-one | specialVehicleSelect |
811,445 | 107×22 | |
| DIV | — | — | Vehicle profile | 76,131 | 127×13 |
| SPAN | — | symptonSelected |
CSC | 179,132 | 59×23 |
| TR | — | recentVinRow |
S60 (11-)2015AYV140MFB0F2303627 | 421,570 | 796×22 |
| TR | — | recentVinRow |
V70 XC (-00)2000YV1LZ56DXY2736349 | 421,594 | 796×22 |
| TR | — | recentVinRow |
S80 (07-)2007YV1AS982272017437 | 421,618 | 796×22 |
| TR | — | recentVinRow |
S80 (07-)2007YV1AS982271017437 | 421,642 | 796×22 |
· 4 controls,
46 clickable, of 116 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | — | 24,151 | 15×15 | |
| A | — | — | — | 402,277 | 140×140 |
| A | — | — | — | 230,481 | 356×267 |
| INPUT | button | .button | Continue | 555,577 | 110×50 |
| DIV | — | — | Parts | 40,131 | 56×13 |
| DIV | — | 35 |
Parts Catalog | 91,149 | 146×21 |
| DIV | — | 76 |
Accessories Web | 91,170 | 146×21 |
| DIV | — | 78 |
CHEMICALS | 91,191 | 146×21 |
| DIV | — | — | Repair | 119,131 | 62×13 |
| DIV | — | 1 |
General Safety Information | 246,149 | 303×21 |
| DIV | — | 2 |
General Information | 246,170 | 303×21 |
| DIV | — | 6 |
Component location | 246,191 | 303×21 |
| DIV | — | 22 |
Service programs | 246,212 | 303×21 |
| DIV | — | 23 |
Removal, replacement and installation | 246,233 | 303×21 |
| DIV | — | 24 |
Overhaul instructions | 246,254 | 303×21 |
| DIV | — | 25 |
Cleaning, Inspection and Adjustment | 246,275 | 303×21 |
| DIV | — | 26 |
Installation instructions, accessories | 246,296 | 303×21 |
| DIV | — | — | Product specifications | 264,131 | 187×13 |
| DIV | — | 4 |
Visual Identification | 360,149 | 367×21 |
| DIV | — | 5 |
Design and Function | 360,170 | 367×21 |
| DIV | — | 27 |
Specifications, electrical/electronic | 360,191 | 367×21 |
| DIV | — | 28 |
Specifications, mechanical | 360,212 | 367×21 |
| DIV | — | 29 |
Specifications, other | 360,233 | 367×21 |
| DIV | — | 31 |
Mechanical schematics and diagrams | 360,254 | 367×21 |
| DIV | — | 32 |
Gas, Vacuum and Fluids Schematics and Diagram | 360,275 | 367×21 |
| DIV | — | — | Fault tracing | 436,131 | 117×13 |
| DIV | — | 19 |
General Diagnostics and Tests | 586,149 | 405×21 |
| DIV | — | 20 |
Diagnostic Trouble Codes and Associated Proce | 586,170 | 405×21 |
| DIV | — | 21 |
Symptom Related Diagnostic Procedures | 586,191 | 405×21 |
| DIV | — | 68 |
Symptom Verification | 586,212 | 405×21 |
| DIV | — | 30 |
Wiring diagrams | 586,233 | 405×21 |
| DIV | — | — | Bulletins | 557,131 | 85×13 |
| DIV | — | 7 |
General Information Bulletins | 656,149 | 271×21 |
| DIV | — | 8 |
Manual Update Bulletins | 656,170 | 271×21 |
| DIV | — | 9 |
Product Fix/Special Tool Bulletins | 656,191 | 271×21 |
| DIV | — | 10 |
Recall/Service Campaign Bulletins | 656,212 | 271×21 |
| DIV | — | 11 |
Emission Recall Campaign Bulletins | 656,233 | 271×21 |
| DIV | — | 12 |
Safety Recall Campaign Bulletins | 656,254 | 271×21 |
| DIV | — | 13 |
Service Manager Bulletins | 656,275 | 271×21 |
| DIV | — | 14 |
Parts/Accessories Bulletins | 656,296 | 271×21 |
| DIV | — | 15 |
TB, Special tools | 656,317 | 271×21 |
| DIV | — | 16 |
TB, General tools | 656,338 | 271×21 |
| DIV | — | 17 |
TB, Personal hand tools | 656,359 | 271×21 |
| DIV | — | 18 |
TB, Diagnostic tools | 656,380 | 271×21 |
| DIV | — | 89 |
TB, Workshop equipment | 656,401 | 271×21 |
| DIV | — | 90 |
TB, Available tools | 656,422 | 271×21 |
| DIV | — | 91 |
TB, Body tools | 656,443 | 271×21 |
| DIV | — | — | Forms | 647,131 | 55×13 |
| DIV | — | 92 |
Forms | 689,149 | 128×21 |
| SPAN | — | buttonPrint |
1315,193 | 58×16 |
· 1 controls,
63 clickable, of 122 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| INPUT | text | DirectAccessInput |
— | 455,175 | 30×22 |
| DIV | — | — | Parts | 40,131 | 56×13 |
| DIV | — | 35 |
Parts Catalog | 91,149 | 146×21 |
| DIV | — | 76 |
Accessories Web | 91,170 | 146×21 |
| DIV | — | 78 |
CHEMICALS | 91,191 | 146×21 |
| DIV | — | — | Repair | 119,131 | 62×13 |
| DIV | — | 1 |
General Safety Information | 231,155 | 303×21 |
| DIV | — | 2 |
General Information | 231,176 | 303×21 |
| DIV | — | 6 |
Component location | 231,197 | 303×21 |
| DIV | — | 22 |
Service programs | 231,218 | 303×21 |
| DIV | — | 23 |
Removal, replacement and installation | 231,239 | 303×21 |
| DIV | — | 24 |
Overhaul instructions | 231,260 | 303×21 |
| DIV | — | 25 |
Cleaning, Inspection and Adjustment | 231,281 | 303×21 |
| DIV | — | 26 |
Installation instructions, accessories | 231,302 | 303×21 |
| DIV | — | — | Product specifications | 264,131 | 187×13 |
| DIV | — | 4 |
Visual Identification | 360,149 | 367×21 |
| DIV | — | 5 |
Design and Function | 360,170 | 367×21 |
| DIV | — | 27 |
Specifications, electrical/electronic | 360,191 | 367×21 |
| DIV | — | 28 |
Specifications, mechanical | 360,212 | 367×21 |
| DIV | — | 29 |
Specifications, other | 360,233 | 367×21 |
| DIV | — | 31 |
Mechanical schematics and diagrams | 360,254 | 367×21 |
| DIV | — | 32 |
Gas, Vacuum and Fluids Schematics and Diagram | 360,275 | 367×21 |
| DIV | — | — | Fault tracing | 436,131 | 117×13 |
| DIV | — | 19 |
General Diagnostics and Tests | 571,155 | 405×21 |
| DIV | — | 20 |
Diagnostic Trouble Codes and Associated Proce | 571,176 | 405×21 |
| DIV | — | 21 |
Symptom Related Diagnostic Procedures | 571,197 | 405×21 |
| DIV | — | 68 |
Symptom Verification | 571,218 | 405×21 |
| DIV | — | 30 |
Wiring diagrams | 571,239 | 405×21 |
| DIV | — | — | Bulletins | 557,131 | 85×13 |
| DIV | — | 7 |
General Information Bulletins | 656,149 | 271×21 |
| DIV | — | 8 |
Manual Update Bulletins | 656,170 | 271×21 |
| DIV | — | 9 |
Product Fix/Special Tool Bulletins | 656,191 | 271×21 |
| DIV | — | 10 |
Recall/Service Campaign Bulletins | 656,212 | 271×21 |
| DIV | — | 11 |
Emission Recall Campaign Bulletins | 656,233 | 271×21 |
| DIV | — | 12 |
Safety Recall Campaign Bulletins | 656,254 | 271×21 |
| DIV | — | 13 |
Service Manager Bulletins | 656,275 | 271×21 |
| DIV | — | 14 |
Parts/Accessories Bulletins | 656,296 | 271×21 |
| DIV | — | 15 |
TB, Special tools | 656,317 | 271×21 |
| DIV | — | 16 |
TB, General tools | 656,338 | 271×21 |
| DIV | — | 17 |
TB, Personal hand tools | 656,359 | 271×21 |
| DIV | — | 18 |
TB, Diagnostic tools | 656,380 | 271×21 |
| DIV | — | 89 |
TB, Workshop equipment | 656,401 | 271×21 |
| DIV | — | 90 |
TB, Available tools | 656,422 | 271×21 |
| DIV | — | 91 |
TB, Body tools | 656,443 | 271×21 |
| DIV | — | — | Forms | 647,131 | 55×13 |
| DIV | — | 92 |
Forms | 689,149 | 128×21 |
| TR | — | row2 |
2 Engine with mountings and equipment | 232,223 | 453×18 |
| TR | — | row2_21 |
21 Engine | 232,241 | 453×18 |
| TR | — | row2_22 |
22 Lubricating and oil system | 232,259 | 453×18 |
| TR | — | row2_23 |
23 Fuel system | 232,277 | 453×18 |
| TR | — | row2_25 |
25 Intake and exhaust system | 232,295 | 453×18 |
| TR | — | row2_26 |
26 Cooling system | 232,313 | 453×18 |
| TR | — | row2_27 |
27 Engine control | 232,331 | 453×18 |
| TR | — | row2_28 |
28 Ignition and control systems | 232,349 | 453×18 |
| TR | — | row2_28_281 |
281 ignition coil, spark plug, ignition cable | 232,367 | 453×18 |
| TR | — | row2_28_283 |
283 control system, ignition | 232,385 | 453×18 |
| TR | — | row2_28_284 |
284 control system, fuel supply | 232,403 | 453×18 |
| TR | — | row2_28_284_382328422 0b00c8af85e4a1db |
Control system, fuel supply, B4204T11, TG-81S | 232,421 | 453×18 |
| TR | — | row3 |
3 Electrical system | 232,439 | 453×18 |
| TR | — | row4 |
4 Power transmission | 232,457 | 453×18 |
| TR | — | row5 |
5 Brakes | 232,475 | 453×18 |
| TR | — | row6 |
6 Suspension and steering | 232,493 | 453×18 |
| TR | — | row7 |
7 Springs and wheels | 232,511 | 453×18 |
| TR | — | row8 |
8 Body and interior | 232,529 | 453×18 |
· 25 controls,
7 clickable, of 68 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | searchButton |
Search | 750,186 | 70×13 |
| A | — | addButton |
Add | 739,199 | 47×13 |
| A | — | printButton |
1311,166 | 59×13 | |
| A | — | newListButton |
New | 30,261 | 49×13 |
| A | — | importListButton |
Import | 93,261 | 69×13 |
| A | — | updateListButton |
Save | 158,261 | 53×13 |
| A | — | closeListButton |
Close | 218,261 | 60×13 |
| A | — | noteButton |
Note | 279,261 | 54×13 |
| A | — | deleteListButton |
Delete | 36,673 | 68×13 |
| A | — | addJobNoButton |
Assign Job Number | 150,673 | 152×13 |
| A | — | exportListButton |
Export | 265,673 | 69×13 |
| A | — | editListButton |
Edit list | 345,673 | 84×13 |
| A | — | changeVinButton |
Change VIN | 441,673 | 99×13 |
| A | — | addSwButton |
Add SW | 38,703 | 71×13 |
| A | — | deleteMultiListButton |
Delete | 37,227 | 68×13 |
| A | — | cancelButton |
Cancel | 667,227 | 69×13 |
| INPUT | text | searchText |
— | 574,174 | 274×22 |
| INPUT | checkbox | checkAllItemsControl |
on | 28,308 | 50×20 |
| INPUT | checkbox | profile |
on | 15,156 | 20×20 |
| INPUT | checkbox | showPartsLists |
on | 227,156 | 20×20 |
| INPUT | checkbox | company |
on | 15,180 | 20×20 |
| INPUT | checkbox | showWorkLists |
on | 227,180 | 20×20 |
| INPUT | checkbox | multiSelectLists |
on | 13,204 | 20×20 |
| SELECT | select-one | searchCategory |
Part number Part description CSC | 653,196 | 116×19 |
| SELECT | select-one | groupSelect |
Type Job no. Vehicle profile QB | 1225,283 | 108×19 |
| SPAN | — | .BarActive | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Change work list | 188,132 | 161×23 |
| SPAN | — | .BarPermitted | Settings | 318,132 | 99×23 |
| SPAN | — | .BarPermitted | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Settings | 318,132 | 99×23 |
| SPAN | — | .BarPermitted | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Change work list | 188,132 | 161×23 |
· 22 controls,
7 clickable, of 68 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | deleteListButton |
Delete | 36,522 | 68×13 |
| A | — | addJobNoButton |
Assign Job Number | 150,522 | 152×13 |
| A | — | exportListButton |
Export | 265,522 | 69×13 |
| A | — | editListButton |
Edit list | 345,522 | 84×13 |
| A | — | changeVinButton |
Change VIN | 441,522 | 99×13 |
| A | — | addSwButton |
Add SW | 38,552 | 71×13 |
| A | — | updateButton |
Save | 596,372 | 53×13 |
| A | — | updateButton |
Cancel | 663,372 | 69×13 |
| INPUT | checkbox | checkAllItemsControl |
on | 28,157 | 50×20 |
| INPUT | checkbox | profile |
on | 15,156 | 20×20 |
| INPUT | checkbox | showPartsLists |
on | 227,156 | 20×20 |
| INPUT | checkbox | company |
on | 15,180 | 20×20 |
| INPUT | checkbox | showWorkLists |
on | 227,180 | 20×20 |
| INPUT | radio | aiocMode |
online | 168,180 | 20×20 |
| INPUT | radio | aiocMode |
offline | 232,180 | 20×20 |
| INPUT | checkbox | — | on | 168,315 | 20×20 |
| INPUT | radio | createEmptyWorklistValue |
true | 168,346 | 20×20 |
| INPUT | radio | createEmptyWorklistValue |
false | 287,346 | 20×20 |
| SELECT | select-one | failoverLang |
Default | 192,205 | 68×19 |
| SELECT | select-one | searchCategoryPreset |
None Part number Part description CSC | 216,229 | 116×19 |
| SELECT | select-one | groupingPreset |
None Type Job no. Vehicle profile QB | 212,260 | 108×19 |
| SELECT | select-one | pageSizeSetting |
25 50 75 100 150 200 | 182,284 | 48×19 |
| SPAN | — | .BarActive | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Change work list | 188,132 | 161×23 |
| SPAN | — | .BarPermitted | Settings | 318,132 | 99×23 |
| SPAN | — | .BarPermitted | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Settings | 318,132 | 99×23 |
| SPAN | — | .BarPermitted | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Change work list | 188,132 | 161×23 |
· 14 controls,
7 clickable, of 57 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | deleteListButton |
Delete | 36,522 | 68×13 |
| A | — | addJobNoButton |
Assign Job Number | 150,522 | 152×13 |
| A | — | exportListButton |
Export | 265,522 | 69×13 |
| A | — | editListButton |
Edit list | 345,522 | 84×13 |
| A | — | changeVinButton |
Change VIN | 441,522 | 99×13 |
| A | — | addSwButton |
Add SW | 38,552 | 71×13 |
| A | — | deleteMultiListButton |
Delete | 37,227 | 68×13 |
| A | — | cancelButton |
Cancel | 667,227 | 69×13 |
| INPUT | checkbox | checkAllItemsControl |
on | 28,157 | 50×20 |
| INPUT | checkbox | profile |
on | 15,156 | 20×20 |
| INPUT | checkbox | showPartsLists |
on | 227,156 | 20×20 |
| INPUT | checkbox | company |
on | 15,180 | 20×20 |
| INPUT | checkbox | showWorkLists |
on | 227,180 | 20×20 |
| INPUT | checkbox | multiSelectLists |
on | 13,204 | 20×20 |
| SPAN | — | .BarActive | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Change work list | 188,132 | 161×23 |
| SPAN | — | .BarPermitted | Settings | 318,132 | 99×23 |
| SPAN | — | .BarPermitted | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Settings | 318,132 | 99×23 |
| SPAN | — | .BarPermitted | Work list | 55,132 | 105×23 |
| SPAN | — | .BarPermitted | Change work list | 188,132 | 161×23 |
· 20 controls,
2 clickable, of 51 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | searchButton |
Search | 539,271 | 70×13 |
| A | — | .actionbutton | Stop | 531,284 | 53×13 |
| A | — | .actionbutton | Back | 531,297 | 53×13 |
| A | — | .resultsTitle | Function group | 88,382 | 107×14 |
| A | — | .resultsTitle | Information type | 387,382 | 120×14 |
| A | — | .resultsTitle | Vehicle profile | 732,382 | 104×14 |
| A | — | .resultsTitle | Title | 1089,382 | 38×14 |
| A | — | — | S60 (11-), 2015A, B4204T11 | 706,412 | 178×14 |
| A | — | — | S60 (11-), 2015A, B4204T11 | 706,442 | 178×14 |
| A | — | — | S60 (11-), 2015A, B4204T11 | 706,472 | 178×14 |
| A | — | — | S60 (11-), 2015A, B4204T11 | 706,502 | 178×14 |
| INPUT | radio | — | true | 25,178 | 20×20 |
| INPUT | radio | — | false | 69,178 | 20×20 |
| INPUT | radio | — | 2 | 22,237 | 20×20 |
| INPUT | radio | — | 1 | 139,237 | 20×20 |
| INPUT | text | — | supercharger | 126,276 | 214×22 |
| INPUT | text | — | — | 385,276 | 214×22 |
| INPUT | radio | — | true | 29,300 | 20×20 |
| INPUT | radio | — | false | 67,300 | 20×20 |
| INPUT | checkbox | — | on | 29,320 | 20×20 |
| DIV | — | .content | Vehicle profile On Off Search for: Part descr | 685,237 | 1345×190 |
| TABLE | — | — | Notes and Search Stop Back All Any Include no | 297,290 | 569×85 |
· 22 controls,
3 clickable, of 43 elements
| tag | type | id / class | text or value | x,y | w×h |
|---|---|---|---|---|---|
| A | — | searchButton |
Search | 539,276 | 70×13 |
| A | — | .actionbutton | Stop | 531,289 | 53×13 |
| A | — | .actionbutton | Back | 531,302 | 53×13 |
| INPUT | radio | — | true | 25,183 | 20×20 |
| INPUT | radio | — | false | 69,183 | 20×20 |
| INPUT | radio | — | 2 | 22,242 | 20×20 |
| INPUT | radio | — | 1 | 139,242 | 20×20 |
| INPUT | text | — | — | 126,281 | 214×22 |
| INPUT | text | — | — | 385,281 | 214×22 |
| INPUT | radio | — | true | 29,305 | 20×20 |
| INPUT | radio | — | false | 67,305 | 20×20 |
| INPUT | checkbox | — | on | 29,325 | 20×20 |
| INPUT | radio | — | 2 | 33,378 | 20×20 |
| INPUT | radio | — | 1 | 61,411 | 20×20 |
| INPUT | radio | — | 2 | 61,431 | 20×20 |
| INPUT | radio | — | 1 | 33,451 | 20×20 |
| INPUT | radio | — | 4 | 33,471 | 20×20 |
| INPUT | radio | — | 3 | 33,491 | 20×20 |
| INPUT | radio | — | 5 | 33,511 | 20×20 |
| INPUT | radio | — | 99 | 33,531 | 20×20 |
| INPUT | radio | — | -1 | 33,551 | 20×20 |
| INPUT | radio | — | 6 | 33,571 | 20×20 |
| DIV | — | .content | Vehicle profile On Off Search for: Part descr | 690,365 | 1355×435 |
| TABLE | — | — | Notes and Search Stop Back All Any Include no | 297,295 | 569×85 |
| TABLE | — | — | Select type of search Parts Show results by P | 312,460 | 600×245 |
· ActiveX — not DOM-addressable
Nothing addressable — this screen is drawn by an embedded control. See the pixel coordinates below.
06 The exception
VIDA’s two live-vehicle surfaces are embedded ActiveX controls that paint their own interface. Their sub-tabs, trees, diagrams and buttons do not exist in the DOM and never will. Everything documentation-related is ordinary HTML; everything that touches the car is not.
OBJECT#DiagMgr
Container DIV#diagDIV
/Vida/Diagnostics/Diagnostics.do
top.choosenTab = 'diagnostics'
10,764 chars of HTML, 16 elements, ZERO anchors, ZERO innerText.
OBJECT#SwdlMgr
Container DIV#swDIV
/Vida/Diagnostics/SoftwareDownload.do
top.choosenTab = 'softwareDownload'
5,642 chars of HTML, 17 elements, ZERO anchors, ZERO innerText.
07 INFORMATION menus
Every item has a stable numeric DOM id. Class reports availability: menuItem = usable, menuItemDisabled = greyed for this vehicle, ItemMouseOver = hover. Contrast the TOP TABS, where disabled state is NOT visible in the class at all. Items need TWO real pixel clicks (parent, then item) - .click() and fireEvent both fail. Item y shifts ~6px once a menu has been opened.
40,131
| id | item | x,y | state |
|---|---|---|---|
| 35 | Parts Catalog | 91,149 | available |
| 76 | Accessories Web | 91,170 | disabled |
| 78 | CHEMICALS | 91,191 | disabled |
119,131
| id | item | x,y | state |
|---|---|---|---|
| 1 | General Safety Information | 246,149 | available |
| 2 | General Information | 246,170 | available |
| 6 | Component location | 246,191 | available |
| 22 | Service programs | 246,212 | available |
| 23 | Removal, replacement and installation | 246,233 | available |
| 24 | Overhaul instructions | 246,254 | available |
| 25 | Cleaning, Inspection and Adjustment | 246,275 | available |
| 26 | Installation instructions, accessories | 246,296 | available |
264,131
| id | item | x,y | state |
|---|---|---|---|
| 4 | Visual Identification | 360,149 | disabled |
| 5 | Design and Function | 360,170 | available |
| 27 | Specifications, electrical/electronic | 360,191 | available |
| 28 | Specifications, mechanical | 360,212 | available |
| 29 | Specifications, other | 360,233 | available |
| 31 | Mechanical schematics and diagrams | 360,254 | disabled |
| 32 | Gas, Vacuum and Fluids Schematics and Diagrams | 360,275 | disabled |
436,131
| id | item | x,y | state |
|---|---|---|---|
| 19 | General Diagnostics and Tests | 586,149 | available |
| 20 | Diagnostic Trouble Codes and Associated Procedures | 586,170 | available |
| 21 | Symptom Related Diagnostic Procedures | 586,191 | available |
| 68 | Symptom Verification | 586,212 | disabled |
| 30 | Wiring diagrams (opens the EWD in a NEW TAB) | 586,233 | available |
557,131
| id | item | x,y | state |
|---|---|---|---|
| 7 | General Information Bulletins | 656,149 | disabled |
| 8 | Manual Update Bulletins | 656,170 | disabled |
| 9 | Product Fix/Special Tool Bulletins | 656,191 | available |
| 10 | Recall/Service Campaign Bulletins | 656,212 | disabled |
| 11 | Emission Recall Campaign Bulletins | 656,233 | disabled |
| 12 | Safety Recall Campaign Bulletins | 656,254 | disabled |
| 13 | Service Manager Bulletins | 656,275 | disabled |
| 14 | Parts/Accessories Bulletins | 656,296 | available |
| 15 | TB, Special tools | 656,317 | available |
| 16 | TB, General tools | 656,338 | available |
| 17 | TB, Personal hand tools | 656,359 | available |
| 18 | TB, Diagnostic tools | 656,380 | available |
| 89 | TB, Workshop equipment | 656,401 | disabled |
| 90 | TB, Available tools | 656,422 | disabled |
| 91 | TB, Body tools | 656,443 | disabled |
647,131
| id | item | x,y | state |
|---|---|---|---|
| 92 | Forms | 689,149 | disabled |
08 Screen-by-screen coordinates
Coordinates read from grid screenshots at 1366x768, IE MAXIMISED. These cover surfaces the DOM cannot reach (ActiveX DiagMgr/SwdlMgr, the EWD tab) plus visual landmarks on HTML pages. Verify against the reference screenshot before relying on a click.
| target | x,y |
|---|---|
| DETAILS | 627,131 |
| NETWORK | 730,131 |
| FAULT TRACE | 848,131 |
| REFERENCE INFORMATION | 1020,131 |
| VEHICLE COMMUNICATION | 1236,131 |
| 1295,157 | |
| live status: Connected | 1272,177 |
| live status: battery voltage | 1288,197 |
| live status: ignition position | 1288,213 |
| target | x,y |
|---|---|
| UPDATE (re-read vehicle) | 660,187 |
| Vehicle details table (first row VIN) | 300,237 |
| Vehicle configuration table header | 95,391 |
Colour = state. green responded OK, grey not fitted/NA, RED = has stored DTCs. The diagram sits ~30px LOWER on VEHICLE COMMUNICATION/DTC-based - coordinates are NOT portable between sub-tabs.
| target | x,y |
|---|---|
| ECM | 71,196 |
| TCM | 71,214 |
| PSCM | 120,210 |
| PDM | 219,204 |
| SUM | 271,200 |
| DEM | 305,200 |
| SODR | 351,196 |
| PAC | 351,214 |
| PHM | 211,232 |
| AUD | 255,232 |
| TVM | 300,232 |
| ICM/IHU | 175,241 |
| IAM | 210,252 |
| DABM | 255,252 |
| RDAR | 300,252 |
| SAS | 74,245 |
| FSM | 108,241 |
| BCM | 74,263 |
| CVM | 108,261 |
| PBM | 74,282 |
| SRS | 74,300 |
| DIM | 140,282 |
| CPM | 173,290 |
| CCM | 204,290 |
| DDM | 235,290 |
| PSM | 265,290 |
| KVM | 296,290 |
| PAM | 339,273 |
| TRM | 341,290 |
| SODL | 352,308 |
| CEM | 107,316 |
| CT | 105,351 |
| UPDATE | 449,235 |
| TEST COMMUNICATION TOOL | 518,267 |
| target | x,y |
|---|---|
| module name header | 500,175 |
| Reference information panel header | 120,407 |
| Active column | 295,407 |
| ref tree row 1 (Design and Function) | 122,432 |
| ref tree expanders | 35,432 |
| ECU identification panel | 587,407 |
| ECU id first value (Serial No) | 768,431 |
| VIEW INFORMATION | 109,705 |
Row pitch 16px.
On this sub-tab the diagram colours mean SELECTED SYMPTOM, not DTC state.
| target | x,y |
|---|---|
| symptom dropdown | 505,424 |
| symptom dropdown arrow | 978,424 |
| UPDATE | 1067,424 |
| ACTION HISTORY | 1197,424 |
| state tab: Initial State | 65,404 |
| state tab: Selected CSC | 170,404 |
| state tab: Unselected CSC | 270,404 |
| state tab: Delivery | 330,404 |
| first fault row | 300,444 |
Row pitch 16px.
| target | x,y |
|---|---|
| CSC based tab | 61,155 |
| DTC based tab | 138,155 |
| CSC tree first row | 200,222 |
| Related DTC header (DTC based) | 48,441 |
Row pitch 16px.
| target | x,y |
|---|---|
| Previous Readout Found - UPDATE (ERASES readout) | 481,391 |
| Previous Readout Found - CANCEL (safe) | 481,430 |
| Previous Readout Found - close X | 922,276 |
| Unhandled exception - CLOSE | 886,429 |
| Unhandled exception - DETAILS | 492,429 |
The Previous Readout dialog MOVES between sessions - locate it from a screenshot, never hardcode. The unhandled-exception dialog has been stable at 886,429. Both block COM; Navigate throws 0x800700AA 'resource is in use', which is a reliable detector that a modal is up.
| target | x,y |
|---|---|
| VIN | Chassis input | 86,210 |
| Model dropdown | 244,210 |
| Model year dropdown | 368,210 |
| Order reference input | 500,210 |
| Software product input | 655,210 |
| Software product browse (...) | 710,210 |
| ADD | 770,211 |
| Communication tool dropdown | 86,251 |
| Diagnostics button | 212,251 |
| Add to: checkbox | 466,248 |
| Add to: dropdown | 668,251 |
| ADVANCED | 1214,163 |
| 1300,163 | |
| S/V40 (-04) REPROGRAMMER | 139,286 |
| QUERY ORDER | 307,286 |
| READ VEHICLE | 754,286 |
| SEARCH | 856,286 |
| TRANSFER TO USB MEMORY | 995,286 |
| tab SOFTWARE LIST | 85,320 |
| tab DOWNLOAD HISTORY | 210,320 |
| PURCHASE | 70,516 |
| RESUME | 159,516 |
| RETRIEVE | 245,516 |
| REVOKE | 329,516 |
| ORDER FOR AN INDEPENDENT WORKSHOP | 517,516 |
| REMOVE | 1284,516 |
| Order details panel | 68,557 |
| Information panel | 418,557 |
| Enable offline download checkbox | 991,617 |
| CONTINUE | 1290,697 |
http://localhost/Vida/wiring_diagrams/US_Eng/index.html
Reached by: INFORMATION > Fault tracing (436,131) > Wiring diagrams (586,233)
| target | x,y |
|---|---|
| EWD header tab | 135,78 |
| START | 44,107 |
| FULLSCREEN - F11 | 178,107 |
| Step 1 - select car model (dropdown) | 114,180 |
| Step 1 arrow | 210,180 |
| Step 2 - select a publication (dropdown) | 114,218 |
| Step 2 arrow | 210,218 |
| Open book | 55,256 |
| New features | 76,294 |
| Help | 46,312 |
Opens in a NEW TAB. Its DOM will not marshal over COM (readyState and title both read empty). A second tab also breaks every script here, because Shell.Application matches BOTH tabs on localhost/vida and the scripts take the last match. Enumerate with ie_windows.ps1, close with $w.Quit() on the wiring_diagrams window.
Geometry is identical for Parts Catalog, Repair/RRI, Specifications etc. Only the panel title and the tree CONTENTS differ. Confirmed across 3 sections.
| target | x,y |
|---|---|
| panel title | 90,151 |
| panel close X | 460,150 |
| Function group label | 383,177 |
| Function group input | 455,175 |
| tree first row | 165,223 |
| document pane (right of divider) | 900,400 |
Row pitch 18px. Expander x by depth: 8, 38, 55, 70.
| target | x,y |
|---|---|
| sub-tab VEHICLE PROFILE | 83,131 |
| sub-tab CSC | 185,131 |
| view tab Component/Function | 80,158 |
| view tab Function group | 220,158 |
| list first row | 100,201 |
| list expanders | 24,201 |
| scrollbar | 393,400 |
Row pitch 18px.
| target | x,y |
|---|---|
| sub-bar WORK LIST | 60,131 |
| sub-bar CHANGE WORK LIST | 194,131 |
| sub-bar SETTINGS | 325,131 |
| search input | 573,174 |
| search category dropdown | 652,196 |
| SEARCH | 754,186 |
| ADD | 743,199 |
| 1316,166 | |
| NEW | 33,261 |
| IMPORT | 96,261 |
| SAVE | 161,261 |
| CLOSE | 222,261 |
| NOTE | 283,261 |
| Group-by dropdown | 1224,283 |
| column header row | 300,309 |
| DELETE | 40,673 |
| ASSIGN JOB NUMBER | 155,673 |
| EXPORT | 269,673 |
| EDIT LIST | 349,673 |
| CHANGE VIN | 445,673 |
| ADD SW | 42,703 |
| target | x,y |
|---|---|
| VCT2000 symbol (runs the diagnostic routine) | 404,265 |
| Continue | 554,576 |
| 1316,191 | |
| previous document | 1295,171 |
| next document | 1336,171 |
| document title | 640,171 |
09 Hazards
Entering DIAGNOSTICS for a VIN that already has a stored readout offers UPDATE —
which erases it, permanently. Export from the DiagSwdlSession database first; that
stored readout may be the only dated record of the car’s earlier state.
VIDA throws a blocking error dialog that swallows every click afterwards without any outward sign. An automated run will appear to succeed and produce a dozen identical screens. Verify the page actually changed between steps.
Search defaults to category Parts and to Any-word matching. Together they
return either nothing or a capped 200 results regardless of the phrase. Set
searchCategory and searchAll=true.