2013-08-16 15 views
5

Nasz zespół pracuje nad aplikacją internetową z AngularJS. Do testowania używamy Jasmine do testowania jednostkowego i testowania kąta-e2e. To działa dobrze. Jednak nasz zespół ds. Kontroli jakości zwrócił się do nas dzisiaj, że próbowali używać selenu do testowania aplikacji internetowej, ale napotykają problemy, ponieważ nie definiujemy identyfikatorów dla większości elementów DOM. Trochę się nad tym zastanawialiśmy, ale bez powodzenia. Czy ktoś może zaproponować dobry sposób na test selenu bez konieczności bezpośredniego dodawania wszystkich identyfikatorów tylko do użycia selenu? Dzięki!Testowanie Angularjs z Selenium bez elementu id

Aktualizacja

Mamy kilka spotkań i skończyło się na wstawienie do identyfikatorów elementów solidności w testowaniu. Dziękuję wszystkim za odpowiedź :)

+1

To jest możliwe, tak, patrz poniżej odpowiedź. Należy jednak pamiętać, że testy zbudowane przy użyciu 'xpath' lub' css-selektorów' będą bardziej kruche niż te zbudowane z właściwymi unikatowymi 'identyfikatorami' dla elementów. –

+0

Dzięki za notatkę! Czy w tym przypadku lepiej jest wprowadzić unikalne identyfikatory dla wszystkich elementów? Obecnie w naszym zespole są dwie przemyślenia, że ​​nie powinniśmy tak bardzo zmieniać aplikacji (wprowadzając wiele identyfikatorów) tylko jako narzędzie pomocnicze; dwa, wprowadzenie identyfikatorów nie jest ani trudne, ani destrukcyjne, jeśli rozwiązuje problem, to dlaczego nie. Obie myśli brzmią dla nas rozsądnie, co byłoby lepszym rozwiązaniem w tym przypadku? – PSWai

Odpowiedz

5

Jeśli korzystasz z Selenium WebDriver istnieje wiele sposobów na znalezienie elementów na stronie. XPATH jest prawdopodobnie jednym z lepszych podejść, jeśli chodzi o elastyczność (choć może to być brzydkie szybko), ale WebDriver pozwala również na używanie nazw klas, nazw tagów, nazwy, tekstu linku i CSS.

Selenium WebDriver - Locate UI Elements

+0

Dzięki za wskazanie! Osobiście nie mam doświadczenia w pracy z Selenium WebDriver, więc nie jestem tego pewien, ponownie skontaktuję się z naszym zespołem ds. Kontroli jakości :) – PSWai

1

Mamy napotkał taką samą sytuację w naszej pracy teraz. Jak wspomniano w tej dyskusji, porównano możliwe dwa podejścia do rozwiązania tego problemu:

  1. spróbować zlokalizować elementy inaczej.
  2. Wprowadzają nowe atrybuty tam, gdzie są potrzebne, nawet jeśli nie są wymagane przez rozwój Angular.

Zdecydowaliśmy się pójść z (2) i dodać identyfikatory w razie potrzeby. Znacznie poprawia wydajność, a narzut nie jest znaczący.

Co dokładnie zrobiliśmy? Do odpowiednich elementów dodano atrybut o nazwie "hak danych" z odpowiednią wartością, która go identyfikuje. Działa świetnie.

Powiązane problemy