Witam,
zrobiłem testy na różnych przeglądarkach, ale chciałem zmodyfikować kod, ponieważ kod powtarza się w warunku:
Jak mam taki kod:
https://github.com/lblaszkowski/MercuryTours_WSB/tree/430716ba2d791ba4e930f03dc6808d4bbe3971bc
to wszystkie testy działają poprawnie, ale kod powtarza się w warunku. Tu jest screen przed modyfikacją pliku application.
I chce go zmienić. W tej wersji nie działa uruchomienie testów np. login.py. To co zmodyfikowałem, to kod application
https://github.com/lblaszkowski/MercuryTours_WSB/tree/e42641acd1a0597d4a7ad503fc069e9687f4a83d
tu jest błąd komunikatu:
plus w pliku.txt
http://wyslijto.tk/download/l7f7c8o4mt09cgwzyva6dt0qi
Co jest nie tak, że test nie działa w tej nowszej wersji ?
Hej,
W przypadku ostatniego błędu
def __init__(self): self.bro = Browser_pages_url() > self.driver.get('http://newtours.demoaut.com/') E AttributeError: 'Application_page' object has no attribute 'driver' ..\Application\application.py:9: AttributeError
problem leży właśnie w application.py – brakuje tam zmiennej driver
w self
😉 Sam driver jest inicjalizowany w browser.py ale dopiero po wywołaniu metody browser_url_pages()
. Dodatkowo self
z Browser_pages_url
to nie jest self
z Application_page
, dlatego odwołanie do zmiennej driver
musi nastąpić przez self.bro
:
class Application_page: def __init__(self): self.bro = Browser_pages_url() self.bro.browser_url_pages() self.bro.driver.get('http://newtours.demoaut.com/') self.bro.driver.maximize_window() print("-----------------") print("Run Started at :" + str(datetime.datetime.now()))
I analogicznie będzie w metodzie destroy
😉
Pozdrawiam,
Nie do końca działa. Jak uruchamiam pojedynczy test, to wyskakuje mi komunikat
że są problemy z driver w pliku application class Application_page.
Tu jest plik.txt:
http://wyslijto.tk/download/32617eplm0t2qsijhdofczltz
Tu jest aktualne repo:
https://github.com/lblaszkowski/MercuryTours_WSB/tree/44612944e4469e801d5fc51553231511e27620ce
To również jest z tym związane 😉 Tzn. z racji że driver
jest w obiekcie bro
, a obiekt bro
jest w class Application_page
to z innych miejsc trzeba “dostawać się” do niego poprzez app.bro.driver
. W testach to będzie self.app.bro.driver
z racji że app
jest w self
.
Tu pojawia się pytanie czy nie warto może uprościć całego łańcucha dostępu do obiektu drivera? 😉 Np. aby Browser_pages_url
zwracał obiekt driver
, który zamiast w self.bro.driver
byłby jak poprzednio w self.driver
w class Application_page
.
Hej Łukasz
Wybacz późną odp. Krzysiek jest obecnie na urlopie i on prowadzi twoją sprawę. Jak się ogarnę z moich tasków to postaram się rzucić okiem na ten kod 😀
Ad.1 . Zrobiłem w teście login.py, ale nadal nie działa. Chyba, że źle zrozumiałem
Tu jest aktualne repo:
https://github.com/lblaszkowski/MercuryTours_WSB/tree/f78af971b3510705a8b98caca43c402abb3525a1
Ad.2. Jak bym miał, to zrobić ?
Odpowiadając na ostatni błąd: https://imgur.com/a/pNKlWIR – problemy mamy w pliku https://github.com/lblaszkowski/MercuryTours_WSB/blob/master/PageObjectModel/Test/login.py
Ta linia nie jest potrzebna: self.app.bro.driver()
gdyż driver już został zainicjalizowany poprzez self.app = Application_page()
i wszystko gra w setUp()
.
Następnie ta linia: driver = self.app.driver
jest odrobinę niepoprawna gdyż driver jest dostępny tak driver = self.app.bro.driver
Powinno pomóc 😀
mam pytanie. Jak zrobić opcje 2, która powiedział Krzysiek K ?
ok. działa 🙂 dzięki za pomoc. 🙂