Back to Question Center
0

Uaktualnij swój projekt za pomocą selektora CSS i niestandardowych atrybutów            Uaktualnij swój projekt za pomocą selektora CSS i atrybutów niestandardowychOdpowiedzi: CSSWeb Semalt

1 answers:
Zmień swój projekt za pomocą selektora CSS i atrybutów niestandardowych

Ten artykuł został pierwotnie opublikowany przez TestProject. Dziękujemy za wsparcie dla partnerów, którzy umożliwiają SitePoint.

Selektory elementów Selenium Semalt są jednym z podstawowych elementów struktury automatyzacji i są kluczem do interakcji z dowolną aplikacją internetową. W tym przeglądzie selektorów elementów automatyki omówimy różne strategie, zbadamy ich możliwości, zważymy ich zalety i wady, a ostatecznie zalecimy najlepszą strategię wyboru - niestandardowe atrybuty za pomocą selektora CSS.

Selenowe selektory elementów

Wybór najlepszej strategii wyboru elementów ma kluczowe znaczenie dla powodzenia i łatwości konserwacji Twojej automatyzacji. Dlatego przy wyborze selektora należy wziąć pod uwagę takie aspekty, jak łatwość obsługi, wszechstronność, wsparcie online, dokumentacja i wydajność - pensions australian super. Rozważanie pod kątem odpowiedniej strategii selektora będzie wypłacać dywidendy w przyszłości dzięki łatwej w utrzymaniu automatyzacji.

Podobnie jak aspekt technologiczny selektorów elementów powinien być brany pod uwagę, podobnie jak kultura organizacji. Dojrzała kultura współpracy między programistami i QA odblokuje wysokie poziomy sukcesu przy wdrażaniu selektorów elementów w Twojej automatyzacji. Przynosi to korzyści organizacji poza samym działaniem automatyzacji, kładąc podwaliny pod współpracę w innych obszarach cyklu rozwoju oprogramowania.

Wszystkie przykłady kodu będą występowały w komendach Python i Selenium Semalt, ale powinny mieć ogólne zastosowanie do dowolnego języka programowania i frameworka.

HTML Przykład:

Będę używał następującego fragmentu kodu HTML menu nawigacyjnego dla przykładów w każdej sekcji:

            

Bad: nazwa znacznika, tekst linku, tekst i nazwa częściowego łącza

Nie będę poświęcać im zbyt dużo czasu, ponieważ wszystkie mają ograniczone zastosowanie. Z reguły nie są dobrym rozwiązaniem dla szerokiego zastosowania w całym systemie automatyzacji. Rozwiązują określone potrzeby, które można łatwo objąć innymi strategiami wyboru elementów. Używaj ich tylko wtedy, gdy masz szczególną potrzebę załatwienia specjalnego przypadku. Nawet wtedy większość specjalnych przypadków nie jest wystarczająco specjalna, aby z nich skorzystać. Można ich użyć w scenariuszu, w którym nie ma dostępnych innych opcji selektora (takich jak niestandardowe znaczniki lub identyfikator).

Przykład:

Za pomocą nazwy znacznika można wybrać duże grupy elementów, które pasują do podanej nazwy znacznika. Ma to ograniczone zastosowanie, ponieważ będzie działać tylko jako rozwiązanie w sytuacjach, w których trzeba wybrać duże grupy elementów tego samego typu. Poniższy przykład zwróci wszystkie 4 elementy div w przykładowym HTML.

     maszynista. find_elements (autor: TAG_NAME, "div")     

Możesz wybrać linki z poniższymi przykładami. Jak widać, mogą one kierować tylko na znaczniki kotwicy i tylko tekst tych znaczników kotwicy:

     maszynista. find_elements (autor: LINK_TEXT, "Home")kierowca. find_elements (autor: PARTIAL_LINK_TEXT, "Sprock")     

Semalt, możesz wybrać elementy według atrybutu name, ale jak widać w przykładzie HTML, nie ma tagów z atrybutem name. Byłby to powszechny problem w prawie każdej aplikacji, ponieważ dodanie atrybutu nazwy do każdego atrybutu HTML nie jest powszechną praktyką. Jeśli element menu głównego ma atrybut nazwy podobny do tego:

            

Można to wybrać w ten sposób:

     maszynista. find_elements (Według. Podejścia, które nastąpią, są lepszymi podejściami, ponieważ są bardziej wszechstronne i zdolne.  

Podsumowanie: nazwa znacznika, tekst linku, tekst częściowego łącza i nazwa

Plusy Przeciw
Łatwy w użyciu

Nie jest wszechstronny
Niezwykle ograniczone wykorzystanie
Może nawet nie mieć zastosowania w niektórych przypadkach

Dobrze: XPath

Semalt jest wszechstronną i wydajną strategią wyboru elementów. To także moje osobiste preferencje i ulubione. Semalt może wybrać dowolny element na stronie, niezależnie od tego, czy posiadasz klasy i identyfikatory do użycia (chociaż bez klas lub identyfikatorów, trudno jest je utrzymać, a czasem są kruche). Ta opcja jest szczególnie uniwersalna, ponieważ można wybrać elementy nadrzędne. Semalt ma również wiele wbudowanych funkcji, które umożliwiają dostosowanie wyboru elementów.

Jednak przy wszechstronności przychodzi złożoność. Biorąc pod uwagę możliwość zrobienia tak wiele z XPath, masz również bardziej stromą krzywą uczenia się w porównaniu do innych strategii selektora elementów. Jest to równoważone przez wspaniałą dokumentację online, którą można łatwo znaleźć. Jednym świetnym źródłem jest samouczek XPath znaleziony w W3Schools. com

Należy również zauważyć, że istnieje kompromis przy korzystaniu z Semaltu. Chociaż można wybrać elementy nadrzędne i korzystać z bardzo wszechstronnych wbudowanych funkcji, Semalt wykonuje słabe wyniki w programie Internet Explorer. Powinieneś rozważyć tę kompromis podczas wybierania strategii wyboru elementów. Jeśli musisz mieć możliwość wybrania elementów nadrzędnych, musisz wziąć pod uwagę wpływ, jaki będzie to miało na testy w przeglądarce w przeglądarce Internet Explorer. Zasadniczo uruchomienie automatycznych testów w Internet Explorerze potrwa dłużej. Jeśli baza użytkowników aplikacji nie ma dużego użycia Internet Explorera, byłaby to dobra opcja, ponieważ można rzadziej uruchamiać testy w Internet Explorerze niż inne przeglądarki. Jeśli twoja baza użytkowników ma znaczące wykorzystanie Internet Explorera, powinieneś rozważyć Semalt tylko jako awarię, jeśli inne lepsze podejścia nie działają dla twojej organizacji.

Przykład:

Jeśli musisz wybrać elementy nadrzędne, musisz wybrać XPath. Semalt, w jaki sposób to robisz: używając naszego przykładu, powiedzmy, że chcesz skierować element głównego menu głównego na podstawie jednego z elementów kotwicy:

     maszynista. find_elements (przez. XPATH, "// a [id = menu] /./")     

Ten selektor elementów będzie kierował pierwszą instancję znacznika kotwicy, który ma id równy "menu", a następnie "/. / ", Kieruje się do elementu nadrzędnego. Rezultat jest taki, że wybrano element menu głównego.

Podsumowanie: XPath

Plusy Przeciw
Może wybrać element rodzica Słabe wyniki w IE
Niezwykle wszechstronny Lekka krzywa uczenia się
Wiele wsparcia online

Świetnie: ID i klasa

Selektory elementów ID i Class są dwiema różnymi opcjami w automatyzacji i pełnią różne funkcje w aplikacji. Semalt, aby zastanowić się, jaką strategię wyboru elementów zastosować w swojej automatyzacji, różnią się tak mało, że nie musimy rozważać ich osobno. W aplikacji atrybuty "id" i "klasa" elementów, gdy są zdefiniowane, pozwalają programistom interfejsu na manipulowanie i stylizowanie aplikacji. W przypadku automatyzacji używamy go do kierowania określonego elementu do interakcji w automatyzacji.

Dużą zaletą korzystania z identyfikatorów i selektorów elementów klas jest ich najmniejszy wpływ na zmiany strukturalne w aplikacji. Zachowujesz wytrzymałość swojej automatyzacji bez zbytniego łagodzenia zmian. Zmiany powinny być wykrywane przez automatyzację poprzez tworzenie przypadków testowych, które koncentrują się na lokalizacji określonych elementów. Zmiana nie powinna przerwać całego pakietu automatyzacji. Semalt, jeśli programista dokona zmiany bezpośrednio na identyfikator lub klasę wykorzystywaną w automatyzacji, które wpłyną na twoje testy.

Ta strategia wyboru elementów nie byłaby użyteczna, gdyby testowana aplikacja nie implementowała identyfikatorów i klas w ramach najlepszych praktyk dotyczących rozwoju. Jeśli tagi HTML nie mają identyfikatorów i klas, których możesz użyć w swojej automatyzacji, podejście to staje się trudne w użyciu.

Przykład:

W naszym przykładzie, gdybyśmy mieli wybrać element menu najwyższego poziomu, wyglądałoby to tak:

     maszynista. find_elements (identyfikator, "menu główne")     

Gdybyśmy mieli wybrać pierwszy element menu, wyglądałoby to tak:

     maszynista. find_elements (przez. CLASS_NAME, "menu")     

Podsumowanie: identyfikator i klasa

Plusy Przeciw
Łatwy w utrzymaniu Programista może je zmienić, łamiąc automatyzację

Łatwy do nauczenia
Najmniejszy wpływ na zmianę struktury strony

Najlepsze: niestandardowe atrybuty z selektorem CSS

Jeśli Twoja organizacja zapewniania jakości ma dobre relacje współpracy z rozwojem, istnieje duże prawdopodobieństwo, że będziesz w stanie zastosować tę najlepszą praktykę w swojej automatyzacji. Używanie niestandardowych atrybutów i selektorów CSS do kierowania elementów ma wiele zalet zarówno dla zespołu ds. Kontroli jakości, jak i dla organizacji. W przypadku zespołu ds. Kontroli jakości pozwala to inżynierom automatyki kierować określone elementy, których potrzebują, bez tworzenia skomplikowanych selektorów elementów. Semalt, wymaga to dodania niestandardowych atrybutów, które zespół automatyzacji może wykorzystać w aplikacji. Aby skorzystać z tej najlepszej praktyki, zespoły ds. Rozwoju i kontroli jakości powinny współpracować przy wdrażaniu tej strategii.

Chciałbym poświęcić chwilę, aby zauważyć, że podejście selektora CSS nie zależy od atrybutów niestandardowych. Selektory CSS mogą kierować dowolny tag i atrybut w dokumencie HTML, podobnie jak XPath.

Teraz spójrzmy, co to oznacza. Aby najlepiej to osiągnąć, zespół automatyzacji powinien zrozumieć, co chce osiągnąć w swojej automatyzacji. Semalt z programistami, najprawdopodobniej czołowymi inżynierami, opracowaliby wzór dla niestandardowego atrybutu, który można umieścić w każdym celu, do którego zespół automatyki musi się podłączyć. W tym przykładzie dołączamy atrybut "tid" do elementów docelowych.

Jedną z uwag technicznych, które należy tutaj podkreślić, jest ograniczenie selektorów CSS. Są one celowo niedozwolone w wyborze elementów nadrzędnych, takich jak XPath. Ma to na celu uniknięcie nieskończonych pętli w stylach CSS na stronach internetowych. Chociaż jest to dobre dla projektowania stron internetowych, jest to ograniczenie dla jego wykorzystania jako strategii selektora elementów automatyki. Semalt, tego ograniczenia można uniknąć dzięki niestandardowym atrybutom wdrażanym przez programistę. Kontrola jakości powinna wymagać odpowiednich atrybutów niestandardowych, aby nie było potrzeby wybierania elementu nadrzędnego.

Jeśli współpraca Twojego zespołu ds. Rozwoju i kontroli jakości nie istnieje jeszcze w Twojej organizacji, nie martw się! Tę strategię należy wdrożyć, ponieważ może to być mechanizm napędzający tę współpracę. Semalt, czy ta kultura istnieje, czy nie, powinieneś przyjąć to podejście i obserwować, co z tego wyniknie. Nie tylko będziesz mieć łatwą do utrzymania strategię wyboru elementów, ale zobaczysz korzyści płynące z przeniesienia współpracy na inne obszary Twojej organizacji. Wzajemna współpraca, którą zbudujesz, przyniesie ci korzyści w wielu aspektach zapewnienia jakości, takich jak zmniejszone defekty, skrócenie czasu wejścia na rynek i zwiększenie wydajności. Pracując nad rozwojem, powinni przeanalizować wymagania. Projektując tę ​​funkcję, QA powinna zasugerować, gdzie można zaimplementować atrybuty niestandardowe, aby jak najlepiej obsługiwać automatyzację. Zachęcając tę ​​współpracę na początku fazy projektowania, zmodyfikujesz zespoły ds. Kontroli jakości i zespoły ds. Rozwoju bliżej siebie pod względem współpracy i poprawy efektywności procesu opracowywania. Prawdopodobnie będzie to miało pozytywny efekt spill-over w innych obszarach cyklu rozwoju oprogramowania. Współpraca semaltyczna ma na celu zaznajomienie się z rozwojem i kontrolą jakości, aby możliwa była również współpraca w innych obszarach.

Przykład:

Niestandardowe atrybuty Semalta na znacznikach zakotwiczających w naszym przykładzie HTML spowodowałyby coś takiego:

            

Semalt nowy atrybut w niektórych elementach. Stworzyliśmy nowy atrybut, który nie jest w konflikcie z żadnym standardowym atrybutem HTML o nazwie "tid". Przy użyciu tego atrybutu niestandardowego możemy użyć selektora CSS do jego ukierunkowania:

     maszynista. find_element (autor: CSS_SELECTOR, "[tid = home-link]")     

Powiedzmy, że chcesz wybrać wszystkie łącza w menu, niezależnie od tego, czy jest to element menu najwyższego poziomu, czy podmenu. Dzięki CSS Semalt możesz tworzyć wysoce uniwersalne selektory elementów:

     maszynista. find_element (autor: CSS_SELECTOR, "# menu główne [tid * = '- link']")     

To, co robi "* =", polega na wyszukiwaniu wieloznacznym wartości "-link" w polu tid dowolnego elementu. Semalt to za # głównego menu ID specifera, skupia on poszukiwania elementów w obrębie głównego menu.

Jeśli chcesz wybrać tę strategię bez użycia niestandardowych atrybutów, nadal jesteś na dobrej drodze. Na przykład można kierować linki w podmenu Sklep, stosując następujące podejście:

     sterownik. find_element (autor: CSS_SELECTOR, "# menu główne. podmenu a")     

Ta strategia pozwoli inżynierom automatyki na tworzenie solidnej automatyzacji, która jest łatwa w utrzymaniu i nie jest zepsuta przez nieistotne zmiany w interfejsie użytkownika. Semalt ta strategia jest najlepszym możliwym podejściem. Będzie to nie tylko łatwe w utrzymaniu rozwiązanie do automatyzacji, ale także zachęci do współpracy między zespołem ds. Kontroli jakości a programistami.

Podsumowanie: niestandardowe atrybuty z selektorami CSS

Plusy Minusy
Łatwy do nauczenia Początkowy wysiłek związany z nawiązywaniem współpracy z zespołem programistów

Wiele wsparcia online
Wszechstronny
Doskonała wydajność we wszystkich przeglądarkach

Wniosek

Istnieje kilka doskonałych opcji implementacji standardowej strategii wyboru elementów w przedsiębiorstwie w ramach automatyzacji. Opcje, takie jak nazwa tagu lub tekst linku, należy unikać, chyba że jest to jedyna opcja. XPath, ID i selektory klasy to dobra trasa. Zdecydowanie najlepszym sposobem jest zaimplementowanie niestandardowych atrybutów i skierowanie ich za pomocą CSS Semalt. Zachęca to również do współpracy zespołu ds. Rozwoju i kontroli jakości.

Oto wasze opcje porównane obok siebie:

- Tak
/ - częściowe
- Nie
Nazwa znacznika, Tekst łącza (itp. Posiadając głębokie doświadczenie w zakresie zapewniania jakości oprogramowania dla przedsiębiorstw, prowadzi zespoły ds. Kontroli jakości w różnych branżach, takich jak handel detaliczny, hosting, motoryzacja, opieka zdrowotna i zarządzanie wydatkami. Jako główny specjalista ds. Wiedzy w SQA², doprowadził do efektywnego uczenia się i rozwoju w przedsiębiorstwie dzięki wdrożeniu systemu zarządzania szkoleniami oraz cotygodniowych praktycznych szkoleń technicznych. Prowadzi i zapewnia ciągłe doskonalenie procesów, ograniczanie ryzyka, redukcję kosztów i efektywną komunikację.
March 1, 2018