No elo testerskie świry!

Zacząłem pisać skrypty w Selenium (java) i napotkałem się na taki problem podczas automatyzcji rejestracji użytkownika:

udaje mi się normalnie zarejestrować i odczytać maila. Kiedy klikam w hiperłącze potwierdzający adres email, selenium nie zaczyna analizować strony, do której hiperłącze prowadzi, tylko dalej siedzi na gmail'u.

Jak sobie z tym radzicie? Z góry dziękuję za wszelkie wskazówki. :)

#testowanie #testowanieoprogramowania #selenium #qa #testing no i w sumie #programowanie i
@buntuubuntu: @damianbeat:
Rozwiązanie z otwieraniem nowego okna nie jest najlepsze. Drugie okno powinno być otwierane tylko jeśli jest taka konieczność.
W tym przypadku zamiast klikać na link to skopiuj sobie ten odnośnik i wejdź po prostu na tę stronę poprzez .get(url)

Po drugie - co masz na myśli, że selenium nie czeka na załadowanie strony. Oczywiście, że czeka. Tylko że po załadowaniu się strony różne elementy wcale nie muszą się
  • Odpowiedz
Cześć, mam nadzieję, że ktoś podpowie w czym może być problem, bo już rwe włosy z głowy. Mam projekt z użyciem biblioteki Selenium, wszystko pięknie działa. Jakakolwiek zmiana przy ustawieniach WebDrivera, np. zmiana ChromeDriver na FirefoxDriver, lub dodanie jakiejś opcji powoduje, że albo wszystko działa, albo pojawia się następujący błąd, który zwraca Glassfish:

"Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)"

Nawet cofnięcie zmian np. ctrl + z do działającej wersji skutkuje, że i tak nie
@kr0kus_: @ppawel: brakująca metoda to zazwyczaj wina złej wersji biblioteki - i tak na pewno tak jest. Chyba guava, i jej zła wersja z jakiegoś powodu, nie używam glassfish więc trudno mi pomóc więcej. Nie wiem czy to ma jakiś osobny folder z bibliotekami, czy każda apka ma własne - ale na pewno coś gdzieś trzeba zaktualizować.
  • Odpowiedz
@kr0kus_: no właśnie rzecz w tym, że "aplikacja" odpalająca testy wcale nie musi być aplikacją webową (o ile ktoś nie wymyślił szalonego interfejsu webowego do uruchamiania testów), skoro już używamy Javy to najczyściej to chyba je mieć jako kod testowy wykorzystujący JUnit albo TestNG - w "src/test/java" a nie produkcyjny z "src/main/java" (a odpalanie testów pozostawić temu, kto zrobi jak należy "mvn clean test", ewentualnie to samo wywoływane przez Jenkinsa)

a
  • Odpowiedz
Czółkiem Mirony! Szukam kursu stawiania zautomatyzowanego środowiska testerskiego od podstaw. Dużo lepiej uczy mi się z interaktywnych kursów niż z czytania dokumentacji i właśnie czegoś takiego poszukuję. Kurs może być płatny, ważne żeby był wart zainwestowanych pieniędzy. Chciałbym aby kurs opierał się o Selenium, testNG, Maven, Jenkins. Najlepiej w Javie. Natknął się ktoś na podobny kurs i mógłby coś polecić?
#programowanie #java #maven #selenium #testng #jenkins #testowanieoprogramowania #qa
@fegwegw: Do Jenkinsa ot choćby pipeline as a code i pokazanie jak napisać pipeline do CI/CT/CD. Jakieś podstawy grooviego, zwłaszcza, że ten w Jenkinsie jest nieco okrojony. Maven może jest i prosty, ale można by omówić np. opcje konfiguracji Surefire z JUnit 4 i JUnit5. Do tego instalacja i konfiguracja Selenium Grida na kilku maszynach (Mac+Win) i zintegrowanie tego z Jenkinsem. Wbrew pozorom trochę tego jest i dla kogoś kto to
  • Odpowiedz
Mirki i Mirabelki, przesiadam się z Ruby na Jave i wczoraj w tym grzebać zacząłem.
Ode mnie głosowanie:

Zapis numer 1:

public void loginWithInvalidPassword() { login("main@example.com", "wrongPassword"); }
Zapis numer 2:

public void loginWithInvalidPassword()
{
login("main@example.com", "wrongPassword");
}

Zapis numer 3:

public void loginWithInvalidPassword() {
login("main@example.com", "wrongPassword");
}

W założeniu ma być najłatwiejsze do zrozumienia dla biznesu ¯\_(ツ)_/¯

EDIT: O kurde vipok nie respektuje wcięć, więc jest brzydko, ale wyobraźcie je sobie

Który zapis jet dla Ciebie najbardziej czytelny?

  • Zapis numer 1 3.4% (4)
  • Zapis numer 2 22.9% (27)
  • Zapis numer 3 73.7% (87)

Oddanych głosów: 118

Nie ma znaczenia ani co tu wykopki myślą, ani co jest "najłatwiejsze do zrozumienia dla biznesu" (???) ani nawet co Tobie się wydaje - jest jeden przyjęty standard i jest to numer trzeci (zakładając że wcięło ci tam taba). Albo lecisz zgodnie ze standardem albo jesteś tym, na którego potem się klnie natykając się na jego kod :)
  • Odpowiedz
cześć mirki z #selenium #testowanieoprogramowania
Robię zadanie rekrutacyjne w selenium + java, mam je zamieścić na githubie. Chcę, aby sprawdzający zrobił tylko git pull i wydał jedną komendę do uruchomienia. Tylko co z webdriverem? Dołączyć go do repo i ustawić ścieżkę na sztywno? Wydaje mi się to mało profesjonalne. Czy da się to jakoś do zależności wrzucić, żeby samo się ściągnęło?
Przyjmijmy, że mogę założyć, że sprawdzający będzie używał Windowsa.
Jak wyżej @MaksymMaksymowicz napisał. Robisz folder z driver'ami "WebDriver" w głownym katalogu z projektem i inicjalizacja WebDriver'a na podstawie OS'a np. :

private static void setUpWebdriverVariables() {
if (SystemUtils.IS_OS_LINUX) {
File f = new File("WebDriver/Linux/chromedriver");
System.setProperty("webdriver.chrome.driver", f.getAbsolutePath());
}
if (SystemUtils.IS_OS_WINDOWS) {
File f = new File("WebDriver/Windows/chromedriver.exe");
System.setProperty("webdriver.chrome.driver", f.getAbsolutePath());
}
if (SystemUtils.IS_OS_MAC) {
File f = new File("WebDriver/MacOS/chromedriver");
System.setProperty("webdriver.chrome.driver", f.getAbsolutePath());
}
}

(Z tego co kojarzę to ten kod wymaga importu Apache Commons,
  • Odpowiedz
#programowanie #pomocy #javascript

Hej Mirki. Mam taki problem. Potrzebuję zmienić czas zdjęć na #googlephotos dla około 5k plików na podstawie nazwy pliku. Mogłem użyć jakiegoś #selenium, ale postanowiłem, że zadziałam w #javascript. Tutaj mój nędzny kod: https://pastebin.com/6y1v90rB

problem polega na tym, że jak kliknie się na element zmiany daty/czasu, to pojawią się nowy element na stronie, więc drzewo DOM dokumentu się zmienia.

jak z konsoli odpalę editTime(); a potem setNewTime(godzn,
@henk: // 47
function getElementsByXpath(path, cb) {

// 68
cb(elements); // mozesz dodac return jak ma wyjść w tym miejscu z funkcji (w przypadku warunkow)

// 113
getElementByXpath("(//input[contains(@aria-label,'Godzina')])", function(elements) {
// tutaj to co ma sie wykonać
});
  • Odpowiedz
Mireczki, mam pytanie odnośnie Cucumber'a i Javy. Przy podejściu Page Object Patterns, w jaki sposób mogę uzyskać superklasę w której inicjalizowałbym WebDriver'a i zamykał go po zakończeniu testu. Gdzie mógłbym wrzucić metodę która zapisywałaby mi screenshoty w przypadku faili? Czy mogę tutaj użyć Annotacji z JUnit'a @Before @After w klasie definiującej step'y testu? Czy powinno się podchodzić do tego inaczej?

#testowanieoprogramowania #qa #cucumber #selenium
  • Odpowiedz
dobra, ogarnalem, dla osob, ktore maja taki sam problem, trzeba skopiowac chromedrivera tutaj:

C:\Users[nazwa usera]\.nuget\packages\selenium.webdriver\3.6.0\lib\netstandard2.0\

a nie jak to zawsze bywalo do debugu w folderze projektowym ( ͡° ͜ʖ ͡°)
  • Odpowiedz
Mirki, mam pare pytań do testerów którzy tworzą testy automatyczne z użyciem Selenium i Javy. Obecnie pracuję jako QA Engineer z tym, że są to głównie testy manualne, sam z siebie zacząłem naukę Selenium (Podstawy+ Javy znam).

Pytanie głównie dotyczy podejścia do pisania testów a mianowicie czy w branży używa się tylko i wyłącznie Page Object Patterns? Jeżeli tak, to jak wygląda ogólna struktura testów?
Osobiście u mnie w repo wygląda to
To jeszcze pytanie odnośnie bibloteki do testów, nie wiem czy to moje szczęscię ale przeglądająć oferty większość była z wymgoiem znania TestNG? Jak to sie ma do realiów, naprawdę TestNG jest częsciej wykorzystywany niż JUnit ? Osobiście w tych moich wypocinach na github'ie korzystam z TestNG (dużo łatwiejsza imo konfiguracja, parametry i dodatkowo proste uruchamianie kilku testów równolegle).
  • Odpowiedz
Mirki, potrzebuję porady w temacie #testowanieoprogramowania
Pracuję od pół roku jako tester/qa i zajmuję się między innymi tworzeniem testów automatycznych. Póki co jedyne co ogarniam w temacie automatyki to pisanie testów w #nightwatch - taki framework dla selenium.
Niby jest spoko i automatyka śmiga, ale mam poczucie że po pierwsze to co umiem to jest jakiś niewielki wycinek tego czego się używa, a po drugie że działam po omacku i brak mi
@Heart: nie ma czegos takiego jak "pisanie w selenium", jest pisanie w jakims jezyku uzywajac frameworka zwanego selenium. Poczytaj o page object pattern i przyswoj podstawy programowania.
  • Odpowiedz
Chciałbym rozwinąć się w #java pod względem testów automatycznych i #selenium Niestety w mojej pracy nie mam takiej możliwości, dlatego poszukuję jakichś przystępnych kursów czy książek. Co do samego selenium, to pisałem już w pythonie i js, więc cośtam ogarniam.
Na początek przeczytałem "Java for testers", ale to chyba podstawy podstaw i szukam czegoś bardziej zaawansowanego. Najlepiej by było oczywiście zobaczyć jakiś gotowy projekt z popisanymi testami i jak to wszystko się
Mam pewien problem z Webdriverem - użycie page.click() przeładowuje stronę, co sprawia, że selenium wyrzuca StaleElementReferenceException.

I ja dokładnie wiem, że to dlatego, że traci referencję do obiektu page, tylko, że w moim kodzie ten exception nie ma większego znaczenia, bo po 'page.click()' nie ma już żadnych operacji na obiekcie o nazwie page.

I jak wyciszę ten exception tak jak na zdjęciu, to wszystko działa w porządku, tylko mam z tym taki
Wrathofthe_Tyrant - Mam pewien problem z Webdriverem - użycie page.click() przeładowu...

źródło: comment_wHN2ZAnAy02AE8VO9aNoEmW2ovMzMLPQ.jpg

Pobierz
@m_bielawski: No właśnie chyba iterować niby można nawet po odczepieniu, ale jakakolwiek próba operacji na elemencie rzuci ten exception.

Bo w moim przypadku to było tak, że po pierwszym użyciu 'page.click()' strona była odświeżana. W tle szła wtedy jedna iteracja przez link, który prowadził do trzeciej podstrony (ale nie był klikany, bo nie spełniał warunku) oraz kolejna iteracja, która napotykała link o nazwie 'Next'. Wtedy kliknięcie na 'Next' było już po
  • Odpowiedz
Za bardzo nie mam koncepcji jak to zrobić. Na żywym przykładzie. Mam historyjkę w której "numer zamówienia" muszę wczytywać z pliku xlsx (w którym jest kolumna z numerami zamówień). Mogę w danej historyjce dodać np krok: "Wczytaj numer zamówienia", pod którym dodam wczytywanie z excela. Tyle że za pomocą jenkinsa puszczam jednocześnie np. 20 historyjek i nie mam pomysłu jak zrobić by dla każdej z nich był wpisywany kolejny numer zamówienia z
  • Odpowiedz