2016-09-08 14 views
7

mam wyskakujące okienka o tej nazwie Struktura:Jak wykonać wyrażenie regularne w komendzie waitForPopUp w IDE Selenium?

static_dynamic_static

Część dynamiczna zmienia się przy każdym logowaniu więc moje przypadki testowe nie za każdym razem. Myślałem o rozwiązaniu problemu z wyrażenia regularnego tak:

polecenia: waitForPopUp

docelowa: regexp: static _ + _ static

Ale to nie działa.. Co mam zrobić źle? Czy to działa? Jeśli nie, czy istnieje inny sposób rozwiązania tego problemu?

Odpowiedz

1

Z mojego doświadczenia wynika, że ​​nie trzeba zadeklarować ją jako regex w obszarze docelowym, należy po prostu być w stanie mieć cel jako:

static_*_static 

i że powinien to zrobić

+0

To nie działa niestety. Nie dla polecenia waitForPopUp, a nie dla thr selectWindow :( –

0

Jeśli masz tylko jedno okienko można użyć null jako cel i testy odbędą się pierwsze okienko:

waitForPopup | null 

Inną opcją jest uzyskanie dynamicznej części przed otwarciem podręcznym. Jest bardzo prawdopodobne, że część dynamiczna mogła zostać pobrana ze strony. Jeśli więc można dostać go za pomocą storeEval i niż używać jak:

waitForPopup | javascript{'static'+storedVars['dynamic']+'static'} 

Jeśli nie można zapisać dynamiczną część proszę podać HTML strony, czy tylko część, w której wspomniany dynamiczna część.

Widzę, że teoretycznie można uzyskać wszystkie nazwy okien, a następnie użyć wzorca w pętli, aby uzyskać jeden.

Również (teoretycznie) możliwe jest rozszerzenie domyślnej funkcji waitForPopup.

Ale drugi sposób, a zwłaszcza pierwszy, są znacznie tańsze.

0

Najlepszym sposobem radzenia sobie z tym może być prowadzony fragment javascript, aby obsłużyć to:

<tr> 
    <td>storeEval</td> 
    <td>var myRe = new RegExp(&quot;^prefix.+&quot;, &quot;g&quot;); var mywin; windows=selenium.getAllWindowNames();for (i = 0; i &lt; windows.length; i++) { if(myRe.test(windows[i])) { mywin=windows[i]}&nbsp;&nbsp;};&nbsp;&nbsp;mywin;</td> 
    <td>x</td> 
</tr> 
<tr> 
    <td>selectWindow</td> 
    <td>name=${myWindow}</td> 
    <td></td> 
</tr> 

czy Javascript nie jest w pełni funkcji (nie zerowa checking), ale powinien pomóc Ci na dobrej drodze .