Taken automatiseren in AFAS met Python - Wat mis ik?

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
Mijn vraag:
Is er iemand die ervaring heeft met het automatiseren van taken in AFAS met behulp van Python, die wellicht inzicht kan delen waarom Selenium de elements niet kan vinden - wat doe ik verkeerd?

Achtergrond:
Voor mijn werk mag ik elke maand via AFAS declaraties indienen voor woon-werkverkeer en thuiswerkdagen. Dit komt er in de praktijk op neer dat ik aan het einde van elke maand ~20x dezelfde handeling moet verrichten (de genummerde handelingen moeten voor elke gewerkte dag worden gedaan):
  • Ga naar portal
  • Log in
  • Ga naar juiste pagina
  1. Klik knop 'Maak declaratie aan'
  2. Vul in datumveld (voor elke gewerkte dag)
  3. Vul in projectnaamveld (identieke waarde)
  4. Vul in projectfaseveld (identieke waarde)
  5. Vul in opmerking (identieke waarde)
  6. Klik op opslaan
Toen ik dit twee maanden gedaan had dacht ik bij mezelf (wetende dat dit zonde is van de tijd): dit is natuurlijk onzin, dus ik heb gevraagd of het niet mogelijk is om de declaratie één keer aan te maken en dan toe te passen op een range van dagen ('voor de gehele maand'). Maar helaas: dat bleek niet mogelijk.

Aangezien ik al wat ervaring heb met het automatiseren met Python (Selenium) dacht ik: dan doe ik het zelf wel (en ook omdat ik het leuk vind om te doen - als het werkt geeft dat een kick, volgens mij ben ik hierin niet uniek ;)).

Echter: ik merk dat AFAS (via de browser) zich anders gedraagt dan andere websites: knoppen hebben bijvoorbeeld wel een static ID, maar als ik dat ID gebruik om het element te vinden en mee te interacten, dan crasht mijn script omdat het element niet gevonden kan worden. Ook via xPath werkt het niet. Ik ben er inmiddels van overtuigd dat ik iets 'over het hoofd zie' (lees: onvoldoende ervaring) en dat iemand me wellicht een tip kan geven om me verder te helpen. Vandaar dit bericht.

Relevante software en hardware die ik gebruik:
  • PyCharm Community Edition 2022.2.1 (Build #PC-222.3739.56, built on August 16, 2022)
  • Python 3.10.6
  • Crhome 127.0.6533.120 (Official Build) (64-bit) (cohort: Stable)
  • AFAS InSite (current)
Wat ik al gevonden of geprobeerd heb:
Mijn script doet nu dit:
  1. Vraagt voor welke maand ik de declaraties wil invullen
  2. Vraagt om dagen uit te sluiten (weekend, vrije dagen)
  3. Genereert de datums die het moet gaan invoeren
  4. Opent browser
  5. Gaat naar portal
  6. Logt in
  7. Wacht tot ik 2FA heb gebruikt om inlog te bevestigen
  8. Gaat naar juiste pagina
  9. Hier wacht het totdat ik op de knop klik voor een nieuwe decratie (omdat de knop niet gevonden kan worden - terwijl hij toch echt duidelijk in beeld is)
  10. Een overlay opent waarbij het datumveld al geselecteerd is (datum is highlighted)
  11. Verwijdert de huidige datum door backspace te senden
  12. Vult de 1e gegenereerde datum in
Tot hier gaat het redelijk (behalve dat het de knop voor een nieuwe declaraite (#9) niet kan vinden en ik die zelf moet klikken voor elke declaraite), maar nu volgen 2 dropdown boxes (waarin getypt kan worden) en hier gaat het mis: kan de velden niet vinden.

Ik heb een aantal dagen (!) geprobeerd het op te lossen door met tab-key te werken (naar nieuw veld) en dan waardes te senden (naam van het project) en dan door enter-key te senden te bevestigen, daarna tab om naar het volgende veld te gaan, maar dit is een rommeltje en zeer onbetrouwbaar.

Ik ben nu weer terug bij 'het moet toch lukken met xPath of ID', want die kan ik gewoon vinden door de elements te inspecten (en het knaagt dat het niet werkt). Ik heb veel gezocht op de gebruikelijke plekken (StackOverflow, etc. maar omdat AFAS Nederlands is is er vrijwel niets te vinden) en uiteraard ChatGPT gevraagd om suggesies, waaruit komt dat er mogelijk sprake kan zijn van non-static ID's (wat volgens mij niet het geval is: de ID's zijn altijd hetzelfde), met wait.until commands (ervan uitgaande dat er gewacht moet worden tot het venster stabiel is), met 10 seconden tussen elke actie van het script (zeker weten dat het veld interactable is), maar alles faalt.
De overlay die toont na het klikken van de knop voor nieuwe declaraties (#9) zou de oorzaak kunnen zijn dat Selenium die overlay niet 'ziet' (het zou een iFrame kunnen zijn waar ik eerst naar moet switchen, maar in de page source komt niets terug met 'iframe' in de naam), maar waarom kan de knop voor nieuwe declaraties (#9) niet gevonden worden - er is op dat moment geen sprake van een overlay, de knop is duidelijk in beeld dus mogelijk zit het probleem ergens anders.

Maar waar? Bij het inloggen (#6) kan het de elements (velden voor inlognaam en ww) wél vinden met
code:
1
driver.find_element(By.ID
waarom daarna niet meer?

Zoals je merkt: het is behoorlijk frustrerend en ik betwijfel of gewoon maar 20x dezelfde handeling doen elke maand mijn lot is. Ik ben nadrukkelijk niet op zoek naar iemand die een script voor mij maakt (anders was ik wel naar V&A gegaan) maar wel naar suggesties en tips, wellicht iemand die ook met AFAS werkt en heeft uitgevonden wat er speelt.

Bij voorbaat dank! _/-\o_

Bekabelde WIFI

Beste antwoord (via fritsjof op 19-08-2024 17:55)


  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 10-09 22:05
DJMaze schreef op zaterdag 17 augustus 2024 @ 20:04:
Je pakt het verkeerd aan.
Je moet naar de http requests kijken hoe het formulier naar de website server wordt gepost.
Hou rekening met de cookies en (csrf) tokens.
Dit dus.
Makkelijkste manier om dit te doen: gebruik een tools zoals Fiddler Classic om de requests te inspecteren (vanaf inloggen totaan de daadwerkelijke POST met je data) en probeer deze requests na te bouwen.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
"View source" heeft met moderne webapplicaties niet zoveel informatie. Wat gebeurt er als je met F12, Inspect op het element klikt dat je wilt aanklikken? Er komt dan een kruimelpad in je beeld, zit daar een iframe tussen bijvoorbeeld?

Acties:
  • 0 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
Kuhlie schreef op zaterdag 17 augustus 2024 @ 13:12:
Wat gebeurt er als je met F12, Inspect op het element klikt dat je wilt aanklikken? Er komt dan een kruimelpad in je beeld, zit daar een iframe tussen bijvoorbeeld?
Als ik inspect element doe met F12 window open dan highlight deze lijn:
code:
1
<span class="webbutton-text">Nieuw</span>

(de button voor het aanmaken van een nieuwe declaraite heeft 'Nieuw' op de knop staan).
Daarboven alleen veel <div id> en <div class>, geen enkele keer 'iframe'.
Is dit wat je bedoelt?

Als ik de xPath daaruit kopieer dan is dat:
code:
1
//*[@id="Window_0_759AA0B641BC80E98A97E4B3818CE095_action_new"]/span

Het lijkt er op dat de ID hier niet statisch is ('759AA0B641BC80E98A97E4B3818CE095') maar dat is hij wel: deze string is altijd hetzelfde, elke dag dat ik check (met verschillende browsers).
Als ik full xPath kopieer:
code:
1
/html/body/div[2]/div/div[1]/div[2]/div/div/div/div[2]/div/div[5]/div/div[2]/div/div/div/div[2]/div/div/div/button/span


Ik heb dan ook al geprobeerd te interacten via xPath, full xPath, ID, gedeelte van ID. Wat het lastiger maakt is dat op de pagina nog 2 knoppen staan met dezelfde tekst op de knop ('Nieuw') dus de knop is niet uniek wat dat betreft, helaas.

Ik heb daarom ook geprobeerd Selenium de ID's te laten grabben, en ze dan een nummer te geven en dan het ID van het hoogste nummer (laatste button op de pagina) te gebruiken om mee te interacten, maar ook dat faalde. Het is alsof de knoppen er niet zijn, maar ze zijn er, direct in beeld, ook met een wait van 10 seconden (zou genoeg moeten zijn).

Bekabelde WIFI


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10-09 15:38
fritsjof schreef op zaterdag 17 augustus 2024 @ 17:04:
[...]

Als ik inspect element doe met F12 window open dan highlight deze lijn:
code:
1
<span class="webbutton-text">Nieuw</span>

(de button voor het aanmaken van een nieuwe declaraite heeft 'Nieuw' op de knop staan).
Daarboven alleen veel <div id> en <div class>, geen enkele keer 'iframe'.
Is dit wat je bedoelt?

Als ik de xPath daaruit kopieer dan is dat:
code:
1
//*[@id="Window_0_759AA0B641BC80E98A97E4B3818CE095_action_new"]/span

Het lijkt er op dat de ID hier niet statisch is ('759AA0B641BC80E98A97E4B3818CE095') maar dat is hij wel: deze string is altijd hetzelfde, elke dag dat ik check (met verschillende browsers).
Als ik full xPath kopieer:
code:
1
/html/body/div[2]/div/div[1]/div[2]/div/div/div/div[2]/div/div[5]/div/div[2]/div/div/div/div[2]/div/div/div/button/span


Ik heb dan ook al geprobeerd te interacten via xPath, full xPath, ID, gedeelte van ID. Wat het lastiger maakt is dat op de pagina nog 2 knoppen staan met dezelfde tekst op de knop ('Nieuw') dus de knop is niet uniek wat dat betreft, helaas.

Ik heb daarom ook geprobeerd Selenium de ID's te laten grabben, en ze dan een nummer te geven en dan het ID van het hoogste nummer (laatste button op de pagina) te gebruiken om mee te interacten, maar ook dat faalde. Het is alsof de knoppen er niet zijn, maar ze zijn er, direct in beeld, ook met een wait van 10 seconden (zou genoeg moeten zijn).
Kan je de HTML rondom de knop hier neerzetten? Een span is geen knop, en ik zou ergens <button> of <form> verwachten als het een knop betreft. Anders is het misschien een span die ze met Javascript on-click afhandelen, maar dat lijkt me zeer vies en vreemd :+

Acties:
  • 0 Henk 'm!

  • itons
  • Registratie: Oktober 2003
  • Niet online
[id$=“action_new”]

Acties:
  • +2 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Je pakt het verkeerd aan.
Je moet naar de http requests kijken hoe het formulier naar de website server wordt gepost.
Hou rekening met de cookies en (csrf) tokens.

Maak je niet druk, dat doet de compressor maar


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 10-09 22:05
DJMaze schreef op zaterdag 17 augustus 2024 @ 20:04:
Je pakt het verkeerd aan.
Je moet naar de http requests kijken hoe het formulier naar de website server wordt gepost.
Hou rekening met de cookies en (csrf) tokens.
Dit dus.
Makkelijkste manier om dit te doen: gebruik een tools zoals Fiddler Classic om de requests te inspecteren (vanaf inloggen totaan de daadwerkelijke POST met je data) en probeer deze requests na te bouwen.

Acties:
  • 0 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
Merethil schreef op zaterdag 17 augustus 2024 @ 18:44:
[...]

Kan je de HTML rondom de knop hier neerzetten? Een span is geen knop, en ik zou ergens <button> of <form> verwachten als het een knop betreft. Anders is het misschien een span die ze met Javascript on-click afhandelen, maar dat lijkt me zeer vies en vreemd :+
Er staat inderdaad <button> omheen, maar gezien de reacties verderop denk ik dat ik 'met de stgandaard manier' niet verder kom...
Alle drie de buttons op de pagina hebben [id$=“action_new”], dat maakt het zo lastig. Ik moet het anders aanpakken, zoals verderop wordt geadviseerd.
DJMaze schreef op zaterdag 17 augustus 2024 @ 20:04:
Je pakt het verkeerd aan.
Je moet naar de http requests kijken hoe het formulier naar de website server wordt gepost.
Hou rekening met de cookies en (csrf) tokens.
Ik vermoedde al dat ik het helemaal verkeerd aanpakte inderdaad, dank voor dit inzicht. Daar ga ik dan - op zoek naar een totaal andere manier...
Killah_Priest schreef op maandag 19 augustus 2024 @ 09:06:
[...]

Dit dus.
Makkelijkste manier om dit te doen: gebruik een tools zoals Fiddler Classic om de requests te inspecteren (vanaf inloggen totaan de daadwerkelijke POST met je data) en probeer deze requests na te bouwen.
Pfoe... ok, dank voor de aanvulling - nu heb ik een plek om te starten.

Dank allemaal voor de hulp! _/-\o_ - meer tips zijn altijd welkom (DM mag ook als je dat, om wat voor reden dan ook, prettiger vindt).

Bekabelde WIFI


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
fritsjof schreef op maandag 19 augustus 2024 @ 17:54:
Dank allemaal voor de hulp! _/-\o_ - meer tips zijn altijd welkom
graag gedaan.

Tip: vergeet niet de content-type te controleren bij post/put.
Misschien is het wel JSON data.

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
Even een update:

Ik ben aan de slag gegaan met Fiddler Classic en de requests-library in Python, door in eerste instantie de interacties die niet werkten via Selenium te vervangen door Requests, waarbij de sessie-info (gestart door Selenium) wordt gedeeld zodat de Requests-library er ook mee kan werken.

Dit lijkt echter niet goed te werken, helaas: browser crasht.

Dus toen ben ik gaan werken met volledig uitvoering middels Requests, maar het nadeel (voor mij) hierbij is dat er geen zichtbare browser wordt geopend, dus lastiger om te weten wat er in de browser gebeurt (je zou middels Fiddler Classic de acties en resultaten kunnen analyseren maar dit is een stuk lastiger dan simpelweg zien of een knop wordt geklikt).
Daarnaast moet ik, in dit geval, elke maand iets anders handmatig ingeven om de declaraties in te dienen, wat ik eenvoudig kan doen als er een fysieke browser opent (zoals mogelijk bij Selenium) maar niet als de browser er niet is.

Dus ik ben er even mee gestopt voor nu. Mocht iemand wél goede ervaringen hebben met automatisering waarbij zowel Selenium als Requests worden gebruikt, dan hoor ik het graag en ga ik het opnieuw proberen. Maar als het eigenlijk algemeen bekend is dat deze combo niet goed werkt, dan geef ik het voor nu even op, helaas.

Ik hoor het graag, bij voorbaat dank! _/-\o_

Bekabelde WIFI


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Over het algemeen stuur ik sowieso weg van dergelijke oplossingen. Er hoeft maar een scheet te veranderen aan het frontend en je hele script gaat op z'n gat. En potentieel kun je dan helemaal opnieuw beginnen. Als het je zo lastig gemaakt wordt om zaken te automatiseren is dat een hele goede reden om eens naar de concurrentie te gaan kijken; maar het zal allicht niet zo makkelijk zijn om te switchen :)

[ Voor 6% gewijzigd door RobIII op 03-09-2024 11:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
AFAS is enorm klote maar ze hebben wel een API.
Vraag je beheerder of je een API key kan krijgen, dan kun je een stuk gemakkelijker je zaken automatiseren.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
Dank dank dank! :)

Het punt met automatiseren van taken is in dit geval dat ik vermoed dat mijn werkgever bewust de routine niet vereenvoudigt, immers: hoe minder werknemers de declaratie invullen hoe goedkoper. Ik kan me namelijk niet voorstellen dat een grote partij als AFAS geen optie heeft voor 'declareer OV onkostenvergoeding voor alle geboekte werkdagen' of 'declareer OV-vergoeding voor alle gewerkte dagen in maand' ofzo.

Als mijn vermoeden klopt (bewust omslachtig/tijdrovende routine) dan zal men voor mij niet switchen van leverancier, over de API kan ik eens navraag doen, maar heb er ook een hard hoofd in. Toch goede info om te hebben.

Bekabelde WIFI


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Ben je niet beter af met een robotic process automation (RPA) oplossing die voor jou de webpagina bekijkt en invult? Iets als UiPath ofzo (zelf geen ervaring mee, maar ken het van naam).

Acties:
  • +1 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
ThinkPad schreef op dinsdag 3 september 2024 @ 13:50:
Ben je niet beter af met een robotic process automation (RPA) oplossing die voor jou de webpagina bekijkt en invult? Iets als UiPath ofzo (zelf geen ervaring mee, maar ken het van naam).
Dank, dat is een goede suggestie!

Ik heb even gekeken naar free tools en kom op:
  • UiPath Community Edition
  • Automation Anywhere Community Edition
  • Blue Prism
  • TagUI
Ik duik er eens even in, nogmaals dank!

Bekabelde WIFI


Acties:
  • 0 Henk 'm!

  • OverloadOfRed
  • Registratie: Maart 2010
  • Laatst online: 10-09 22:02

OverloadOfRed

Bla, blabla

Ik ken dit probleem, waarbij 'even' kilometers registreren in ADP voor de maand plm 40 minuten werk was heb ik een tijdje geprobeerd het te automatiseren. Gelukkig mochten we toen de registraties bundelen waardoor het probleem eigenlijk weg is gegaan en ik het scriptje niet hoefde af te maken.

Ik denk dat het probleem wat je beschrijft meer-delig is. Enerzijds heb je te maken met javascript, dus je moet soms wachten tot de html opgebouwd is. In robot framework (gebaseerd op en gebruikt Selenium, ken je vast wel) gebruik je daar keyword Wait Until Element Is Visible //selector, vandaar dat de 'sleep' jes ook lijken te werken. Als je een robuustere oplossing wil is soortgelijk in jouw code ook vast mogelijk.

Anderzijds lijkt het probleem dat je niet helemaal weet hoe je bij de juiste button kan komen. (klopt dat?). Daarvoor moet je even gaan spelen met de juiste paden of selectors. In mijn ervaring heeft een button altijd wel iets unieks. Mocht dat niet zo zijn, kijk naar het <form> element waarvan de button ongetwijfeld child is. Makkelijkste is een xpath kopieren, maar het meest robuust is een javascript selector die zoekt naar het form by ID of action (vaak uniek, niet altijd), en dan zoekt naar de laatste button in dat form. Ook hier weer heb je te maken met javascript dus even 'wachten until visible' kan nodig zijn

Ik ben chatman, supersnel met MSN. Er is niemand die me niet kent


Acties:
  • 0 Henk 'm!

  • fritsjof
  • Registratie: Juni 2003
  • Laatst online: 10-09 15:34
OverloadOfRed schreef op maandag 9 september 2024 @ 12:10:
Ik ken dit probleem, waarbij 'even' kilometers registreren in ADP voor de maand plm 40 minuten werk was heb ik een tijdje geprobeerd het te automatiseren. Gelukkig mochten we toen de registraties bundelen waardoor het probleem eigenlijk weg is gegaan en ik het scriptje niet hoefde af te maken.

Ik denk dat het probleem wat je beschrijft meer-delig is. Enerzijds heb je te maken met javascript, dus je moet soms wachten tot de html opgebouwd is. In robot framework (gebaseerd op en gebruikt Selenium, ken je vast wel) gebruik je daar keyword Wait Until Element Is Visible //selector, vandaar dat de 'sleep' jes ook lijken te werken. Als je een robuustere oplossing wil is soortgelijk in jouw code ook vast mogelijk.

Anderzijds lijkt het probleem dat je niet helemaal weet hoe je bij de juiste button kan komen. (klopt dat?). Daarvoor moet je even gaan spelen met de juiste paden of selectors. In mijn ervaring heeft een button altijd wel iets unieks. Mocht dat niet zo zijn, kijk naar het <form> element waarvan de button ongetwijfeld child is. Makkelijkste is een xpath kopieren, maar het meest robuust is een javascript selector die zoekt naar het form by ID of action (vaak uniek, niet altijd), en dan zoekt naar de laatste button in dat form. Ook hier weer heb je te maken met javascript dus even 'wachten until visible' kan nodig zijn
Dank voor je reactie! Goed om te weten dat ik niet de enige ben die hiermee aan het stoeien is geweest...

Ik heb de wait-functie gebruikt, ik heb xPath, ID en elke andere vorm van selecten geprobeerd, maar het bleef misgaan.
De 3 knoppen om te selecteren hebben allemaal dezelfde tekst op de button, en hoewel de ID's voor alle 3 anders is, kon Selenium ze niet vinden. De ID's lijken een generated aantal karakters (uniek per knop) maar altijd gelijk (elke sessie). Toch kon mijn script ze niet vinden.

Ook elementen die wel duidelijk een uniek label hebben werden niet altijd gevonden, ook niet met wait-untill, mogelijk heeft dat dan weer te maken met het feit dat voor fomrs een overlay wordt gebruikt.

Ik heb dit verder nog niet meegemaakt met Selenium op deze manier, en er zal ongetwijfeld een oplossing mogelijk zijn, en die had ik ook totdat de beheerders e.e.a. hebben aangepast en m'n hele script vrijwel waardeloos werd...

Voor nu heb ik het project even in de ijskast gezet, wellicht dat ik het in de toekomst nog eens oppak.

Bekabelde WIFI


Acties:
  • +1 Henk 'm!

  • OverloadOfRed
  • Registratie: Maart 2010
  • Laatst online: 10-09 22:02

OverloadOfRed

Bla, blabla

fritsjof schreef op vrijdag 20 september 2024 @ 10:04:
[...]

Dank voor je reactie! Goed om te weten dat ik niet de enige ben die hiermee aan het stoeien is geweest...

Ik heb de wait-functie gebruikt, ik heb xPath, ID en elke andere vorm van selecten geprobeerd, maar het bleef misgaan.
De 3 knoppen om te selecteren hebben allemaal dezelfde tekst op de button, en hoewel de ID's voor alle 3 anders is, kon Selenium ze niet vinden. De ID's lijken een generated aantal karakters (uniek per knop) maar altijd gelijk (elke sessie). Toch kon mijn script ze niet vinden.

Ook elementen die wel duidelijk een uniek label hebben werden niet altijd gevonden, ook niet met wait-untill, mogelijk heeft dat dan weer te maken met het feit dat voor fomrs een overlay wordt gebruikt.

Ik heb dit verder nog niet meegemaakt met Selenium op deze manier, en er zal ongetwijfeld een oplossing mogelijk zijn, en die had ik ook totdat de beheerders e.e.a. hebben aangepast en m'n hele script vrijwel waardeloos werd...

Voor nu heb ik het project even in de ijskast gezet, wellicht dat ik het in de toekomst nog eens oppak.
Interessant. Is het een frameset of iframe waar de buttons in leven? Dat is voor de weergave niet zo belangrijk maar voor selenium achtige zaken zeker wel. ‘Switch frame //frame-selector’ moet je dan in robot framework pakken. Wellicht niet meer interessant voor jou nu maar voor de persoon die dit topic over 20 jaar tegen komt

Ik ben chatman, supersnel met MSN. Er is niemand die me niet kent

Pagina: 1