2016-07-22 6 views
0

Ich schreibe Tests für eine React Front-End-Anwendung. Einer der Tests muss überprüfen, wie ein Wert vom Server zurückgegeben wurde. Nämlich, ich habe folgende Spannweiten:Getting text from Reacted umspannte span mit webdriverio

<span id='result'> 
    <!-- our version of react wraps the resulting text by default --> 
    <span data-reactid>the actual result</span> 
</span> 


// test.js 
getResult() { 
    let a = browser.getText('#result span'); 
    console.log('a:', a); 
} // unfortunately, getting it this way will mean having to rewrite the test once we upgrade to a newer version of React (after 15 is does not do the wrapping anymore) 

Also im Grunde .. Wie kann ich den Textwert in einer solchen Art und Weise erhalten, dass entweder die Spanne, die durch reagieren, um eine ID oder Klasse hat ... oder jede andere In welcher Weise würden Veränderungen der dom-Struktur nicht bedeuten, dass Tests neu geschrieben werden müssen?

+0

hast du nur versucht 'browser.getText ('# result')'? –

+0

ja .. aber weil reagiert immer umhüllt ein um Dinge, muss ich browser.getText ('# result span'); – JeanAlesi

Antwort

1

Ich bin nicht sicher, wie es mit nur der WebDriver-API zu tun ist, aber Sie könnten etwas Javascript verwenden, um den Wert zu erhalten. Etwas wie folgt aus:

var id = 'result'; 

client.execute(function(a) { 
    return document.getElementById(a).textContent; 
}, id).then(function(ret) { 
    console.log(ret.value); // outputs: the actual result 
}); 

von textcontent verwenden, obwohl Ihre Wähler die übergeordnete Spanne richtet, wird es dem Kind <span> Tags ignorieren, wenn Sie den Text ausgibt.

+0

ausgezeichnet! Mit dem Webdriver erhalte ich einfach den Elternteil und führe ihn darauf aus. Vielen Dank. – JeanAlesi