Forum Testowania i AutomatyzacjiProblem zaznaczeniem elementu z listy rozwijanej
AvatarŁukasz Błaszkowski zapytał 6 lat temu

Witam,
mam problem zaznaczeniem elementu z listy rozwijanej. Jak uruchomiam testy, to wyskakuje mi komunikat w konsoli:

FAILED (errors=1)
Error
Traceback (most recent call last):
File “C:\Python37-32\lib\unittest\case.py”, line 59, in testPartExecutor
yield
File “C:\Python37-32\lib\unittest\case.py”, line 615, in run
testMethod()
File “C:\MercuryTours_WSB\PageObjectModel\Test\rezerwacja_lotu.py”, line 45, in test_Rezerwacja_lotu
ReservationFlight.select_pass0meal(“Hindu”)
File “C:\MercuryTours_WSB\PageObjectModel\Pages\reservationFlightPage.py”, line 77, in select_pass0meal
select = Select(self.driver.find_element_by_name(Locators.select_field_pass0meal))
File “C:\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 496, in find_element_by_name
return self.find_element(by=By.NAME, value=name)
File “C:\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 978, in find_element
‘value’: value})[‘value’]File “C:\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
self.error_handler.check_response(response)
File “C:\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [name=”//*[@name=’pass.0.meal’]”] Próbowałem zrobić na sleep lub wait, ale nadal tak samo. Co może być nie tak ?
Tu jest komunikat:

View post on imgur.com


tu jest element z listy rozwijanej

View post on imgur.com


 
Testowana strona:
http://newtours.demoaut.com/mercurysignon.php

2 odpowiedzi
Best Answer
Krzysiek KijasKrzysiek Kijas Personel odpowiedział 6 lat temu

Hej,
Jak wygląda Twój test? Dropdown z wartością dla Meal jest dostępny jedynie dla pewnych rodzajów klas przelotu (Service Class – tylko Business i First class, które definiuje się w pierwszym kroku/stronie szukania przelotów). Dla tych dwóch klas bez problemu można pobrać element typu dropdown za pomocą XPatha 😉

Pozdrawiam,

Krzysiek KijasKrzysiek Kijas Personel odpowiedział 6 lat temu

Z kodem od razu lepiej 😀
W metodzie:

    def select_pass0meal(self, pass0meal):
        select = Select(self.driver.find_element_by_name(Locators.select_field_pass0meal))
        select.select_by_visible_text(pass0meal)

używana jest metoda find_element_by_name, natomiast pod Locators.select_field_pass0meal znajduje się wyrazenie XPath 😉

AvatarŁukasz Błaszkowski odpowiedział 6 lat temu

to jest strona testowa:
https://github.com/lblaszkowski/MercuryTours_WSB/commits/master

Na niej można uczyć się testów automatycznych.Ta strona jest często wykorzystywana w kursach lub szkoleniach itp.

Scenariusz był robiony krok po kroku manualnie i kończy się powodzeniem.. tu jest pierwszy commit tego testu

https://github.com/lblaszkowski/MercuryTours_WSB/tree/30d759fea7485145407e3cc7673c69b291845e2c

i tam działa

Krzysiek KijasKrzysiek Kijas Personel odpowiedział 6 lat temu

Myślę, że możesz pod warunkiem, że nie ma tam oczywiście jakiś wrażliwych danych (haseł), chociaż z tego co widzę to chyba strona testowa 🙂 Aczkolwiek w Economy class nie występuje później dropdown z wartością dla Meal dlatego to może być problemem. Pytanie czy przejście tego scenariusza krok-po-kroku tak jak został zautomatyzowany kończy się powodzeniem? 😉

AvatarŁukasz Błaszkowski odpowiedział 6 lat temu

Przed testem pole Service Class jest ustawione na Economy class.Tu jest screen

https://imgur.com/a/SAemiqD

po teście. Jest ustawione na Business class

https://imgur.com/a/Ry6zRQH

kod testu:

https://imgur.com/a/22Wv2Tn

tu są metody:

https://imgur.com/a/zmeLuxX

a tu lokatory:

https://imgur.com/a/AOZSHoo

ps. mogę podesłać repozytorium z kodem ?

Krzysiek KijasKrzysiek Kijas Personel odpowiedział 6 lat temu

Hmmm niewiele niestety jestem w stanie tam dojrzeć 🙁 W tym teście, w którym występuje ten błąd z dropdownem, to jaka jest ustawiona wartość pola Service Class?

AvatarŁukasz Błaszkowski odpowiedział 6 lat temu

Tak wygląda mój test w pierwszym kroku:

https://imgur.com/a/i7Y75Jq

AvatarŁukasz Błaszkowski odpowiedział 6 lat temu

ok. działa. Wielki dzięki za pomoc
ps. A może wiesz dlaczego nie działa mi ddt. To zapytanie jest w innym komentarzu ?

Krzysiek KijasKrzysiek Kijas Personel odpowiedział 6 lat temu

Nie ma sprawy 🙂

PS. odpowiedzi nt ddt juz się pojawiły 😉