[Selenium/JS] waarden van xml bestand uitlezen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • freyk
  • Registratie: September 2003
  • Laatst online: 10-09 06:13
Ik ben al een tijdje bezig om een methode te zoeken voor het uitlezen van waardes binnen XML bestanden, via Selenium Server & IDE.
Wel kan ik al redelijk waarden controleren met gebruikersextensie AssertTextPresentXML
of via een XPath (testcommando: Verify Text - //*[text()='waarde1'] )

Mijn doel is om de waarde van Uid in een selenium variabele te zetten.
(En het moet via firefox, google chrome gelezen kunnen worden)
Zo'n commando zou er als volgt uit kunnen zien:
open - http://mijnlocatie/bestand.xml
store - /Response/Uid - mijnvar
echo - ${mijnvar}
Dit lukt niet omdat selenium altijd (met verschillende xpath's) aangeeft dat hij element of de waarde niet kan vinden. (is ook blijkbaar nog een bepaalde eigenschap wat Selenium nog niet goed kan)

Na een zoektocht heb ik begrepen dat stukje javascript en een xpath iets voor mij zou kunnen betekenen, maar verder dan het onderstaande en een aantal probeersels kan ik niet komen.
Werkende voorbeeldcode:
store - javascript{Math.random()} - mijnvar
echo - ${mijnvar}

Weten jullie of hebben jullie voorbeelden hoe ik deze combinatie werkend kan krijgen?

Een voorbeeld van de inhoud van zo'n xml-bestand:
XML:
1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Uid><![CDATA[waarde1]]></Uid>
    <Oid><![CDATA[waarde2]]></Oid>
</Response>

Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Volgens mij kan de Selenium Javascript alleen in HTML paginas ge-embed worden en niet in XML "paginas".
Dan wordt het dus lastig om op die manier variabelen uit te willen lezen.

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


Acties:
  • 0 Henk 'm!

  • freyk
  • Registratie: September 2003
  • Laatst online: 10-09 06:13
Dat weet ik niet zo precies, maar denk dat het wel kan.
(zover ik het weet, word de javascript in de testopdracht bewaard en met behulp van seleniums testmechanisme in de browser zelf uitgevoerd.)

Voor de duidelijkheid: Op dit moment, ik ben op zoek naar een xml-scraper, dat zijn resultaat in een variabele stopt.
Ik ben al op zoek geweest naar xml-scrapers (en deze ook gevonden), maar door mijn mindere javascript kennis, lukt het mij niet om het resultaat in variabele te bewaren.

Ik zal later wel een stukje code van een xmlscraper plaatsen en vraag jullie hier wat ik moet wijzigen om het naar een variabele weg te schrijven.

[ Voor 30% gewijzigd door freyk op 14-07-2012 18:53 ]


Acties:
  • 0 Henk 'm!

  • freyk
  • Registratie: September 2003
  • Laatst online: 10-09 06:13
Ik heb een redelijke work-around gevonden, door de XML-pagina met de online XML-reader van xmlviewer.net te openen en hierna de waarden te lezen:
code:
1
2
3
4
5
6
7
8
open - http://www.xmlviewer.net/
type - [locatie van xml bestand]
click - css=input[type="button"]
storeText - //div[@id='xmlViewLocation']/a[6]/i/text() - uidformat
echo - ${uidformat}
!Filter met een reguliere expressie uidformat
storeEval - reg=/(?:[a-z][a-z0-9_]*)/;reg.exec(${uidformat}) - uid
echo - ${uid}

Met als resultaat: waarde1

Bestaat er nog een andere oplossing?

edit: Code aangepast.

[ Voor 18% gewijzigd door freyk op 18-07-2012 15:35 ]


Acties:
  • 0 Henk 'm!

  • Lupo1989
  • Registratie: Maart 2010
  • Laatst online: 14-08 19:08
hey freeky,

Ik heb je oplossing gevonden. Maak een nieuwe javascript bestand aan. Zoals "user-extensions.js".

code:
1
2
3
4
Selenium.prototype.doHelloWorld = function()
{
    alert("Hello World!");
};


Ga daarna naar "Selenium IDE > Options > Options...". Dan zal je Selenium Core extensions bij zien staan. Verwijs daar naar je aangemaakte javascript. Herstart Selenium IDE. Bij Command zal nu HelloWorld functie erbij komen te staan.

Ik zal later even samen met je kijken voor een xml parser in javascript. Dit zal niet zo moelijk moeten zijn wanneer we nu custom functies kunnen aanroepen. Ik post later het script nog ;)

Slaap ze gozer ;)