2009-09-25 13 views
8

Próbuję wybrać wartość w elemencie select. Używam Selenium RC (Java) do uruchamiania przypadków testowych. Rozumiem, że kod wybierając wartość jest dana przez:Używanie Selenium do wybierania opcji na wybierz z optgroup

selenium.select("locator", "value=REQUIRED VALUE") 

jestem w stanie wybrać żądaną wartość za pomocą powyższego kodu. Myślę, że może to mieć coś wspólnego z optgroup w wybranym kodzie źródłowym. Nie dostaję żadnych wyjątków, polecenie wykonuje się dobrze, ale patrząc na stronę, wymagana wartość nie jest wybrana. Ponadto nie mogę używać identyfikatorów (zamiast wartości), ponieważ nie ma żadnych. Oto kod źródłowy selektora:

<select> 
    <optgroup label="Group1"> 
     <option value="13">some value1</option> 
     <option value="25">some value2</option> 
    </optgroup> 
    <optgroup label="Group2"> 
     <option value="18">REQUIRED VALUE</option> 
     <option value="34">some value3</option> 
     ... 
     ... 
    </optgroup> 
</select> 

Czy istnieje sposób na wybranie wymaganej wartości przy użyciu Selenium?

Byłoby świetnie, gdybyśmy mogli uniknąć wartości opcji (takich jak "18", "34" itp.), Ponieważ te liczby zmieniają się później wraz ze zmianą wartości. Na przykład "WYMAGANA WARTOŚĆ" ma wartość -18, ale gdybym miała usunąć ten element i dodać go ponownie, jego wartość byłaby inna. Zasadniczo to rozwijane pole jest dynamiczne.

Odpowiedz

13

Wartość wymaganej opcji w twoim przykładzie to faktycznie "18". Wypróbuj następujące:

selenium.select("locator", "label=REQUIRED VALUE") 
+0

Witaj Dave, Dzięki za odpowiedź. Ale czy sądzisz, że jest inny sposób niż użycie 18? Zawartość rozwijanej zmiany w mojej aplikacji, podobnie jak liczby. Innymi słowy, teraz jego wyświetlenie jest możliwe, ale może to być dowolna liczba. Nawet jeśli wielokrotnie przeprowadzę moje testy, te liczby się zmienią. Czy masz jakieś inne pomysły co do tego, co można zrobić? Tymczasem będę aktualizować ten komentarz także na moje pytanie. Dzięki, Mugen – Mugen

+1

Sprawdź ponownie moją odpowiedź. Sugeruję zmianę "value =" na "label =". Pozwala to wybrać opcję opartą na jej etykiecie zamiast jej wartości. –

+1

Dzięki za odpowiedź. Działa idealnie z etykietą! – Mugen