Wpis z mikrobloga

Cześć Mirki z #testowanieoprogramowania #qa #automatyzacjatestow
Zaczynam powoli przygodę z automatyzacją. Odpaliłem sobie strony na których można ćwiczyć pisanie automatów. Używam Selenium Webdriver w Javie.
Niestety namierzanie elementów mnie pokonało. Nie potrafię poradzić sobię z namierzeniem pola w którym wpisuje się ilość produktów. Największy problem jest w tym, że "input class="form-control" w każdym divie jest taki sam. Elementem, który pozwoli na odróżnienie jednego diva od drugiego jest "button id", który znajduje się na tym samym poziomie co "form-control". Namierzać to w jakiś sposób xpathem?
(czego używacie w przeglądarkach dla przyspieszenia szukania xpathów?)
Help me.

https://buggy-testingcup.pgs-soft.com/task_1

http://i.imgur.com/kX1oUqh.png
a.....s - Cześć Mirki z #testowanieoprogramowania #qa #automatyzacjatestow
Zaczynam ...

źródło: comment_znrYxhDVu1rjAOf5m71xOhVP6s9evR6H.jpg

Pobierz
  • 20
  • Odpowiedz
@PanKara: Próbowałem FirePathem ogarnąć, pokazuje mi tylko jakieś dzikie rzeczy, które nie działają.
XPath z FirePath:

html/body/div/div/div[2]/div[1]/form/div[1]/div[1]/div/div/div/span/input
  • Odpowiedz
nie bedziesz musial praktycznie nic robic


@PanKara: Nie zgodzę się. Z mojego doświadczenia wynika, że lepiej raz samemu napisać xpatha porządnie, niż 10 razy poprawiać to co zaproponował FirePath czy inny dodatek (a na koniec i tak przepisać po swojemu( ͡° ͜ʖ ͡°))

W tym przypadku, tak na szybko, można zrobić coś takiego:
//div[@class='input-group input-group-sm' and ./span/button[@data-product-name='Okulary']]/input i zamiast "Okulary" podstawiasz dowolny inny przedmiot
  • Odpowiedz
@audiokoks: już dawno przeprowadzka ( ͡° ͜ʖ ͡°)

@kotoj: tak zgodze sie z Toba - ale na początek wystarczy. Na gotowym Xpathu może sobie już np skrócić scieżkę divów i otrzyma prawie o polowe krótsza scieżkę. html/body/div[1]/div/div[2]/div[1]/form/div[1]/div[1]//input i na tej bazie może kombinować dalej.

Wszystko małymi kroczkami ( ͡° ͜ʖ ͡°)

@audiokoks: nie doczytałem do końca i link zobaczylem dopiero do
  • Odpowiedz
@audiokoks: FirePath z racji tego ze nie ma takiego prostego sposobu na zlokalizowanie elementu po ID / klasie czegos tam zaglebia sie w zrodlo strony i leci od poczatku po 'kontenerach' zaczyna od htmla, wchodzi do body, potem do diva [1] (nie pamietam numeracji dokladnie czy liczy od 0 czy jak :<) w tym divie znajduje diva w nim kolejnego itd az dochodzi do formularza to najlatwiej sobie obczaic zwijajac w
  • Odpowiedz
@PanKara: @test_user:

public static void main(String[] args) throws InterruptedException{
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://buggy-testingcup.pgs-soft.com/task_1");
Thread.sleep(3000);
WebElement Okulary = driver.findElement(By.xpath("//input[@class='html/body/div/div/div[2]/div[1]/form/div[1]/div[1]/div/div/div/span/input']"));
Okulary.sendKeys("6");

}

Nie zabanglało. Coś źle zrobiłem?
  • Odpowiedz
@audiokoks: http://www.guru99.com/xpath-selenium.html Poczytaj i się naucz.
To, co wypluwa FirePath to najprostsza i najbardziej wrażliwa na zmiany ścieżka.
Cała zabawa z xpathem polega na tym żeby po spojrzeniu na kod html użyć wiedzy z linku powyżej do napisania swojego xpatha, który będzie w miarę krótki i konkretny. Taki napisany XPath wklepujesz do FirePatha i klikasz Enter. W większości przypadków, gdy dostaniesz 1 rezultat, możesz śmiało swojego XPatha użyć w kodzie testu.
  • Odpowiedz
@PanKara: O BORZE... Zaćmienie umysłowe. Wytłumaczę to godziną 16:00 i myślą o korkach na Klecińskiej.
@venomik: Dzięki!
@Fristo: Zabieram się za czytanie, dzięki.
@test_user: Wrzucilem to na szybko, bo myślałem, że nie może namierzyć elementu przez to, że strona się nie załadowała. Staram się jak najmniej używać sleepów, itp.
  • Odpowiedz
na początek wystarczy


@PanKara: wystarczy na chwilę, po dopisaniu kolejnych takich 5 xpathów nie będzie wiedział do czego był pierwszy. Poza tym to jest tak podatne na najdrobniejsze zmiany że szkoda gadać. Jeszcze raz - od poczatku uczyć się xpathów dobrze, później to się zwróci z nawiązką. Nie ma sensu uczyć się czegokolwiek dalej bez umiejętności pisania lokalizatorów. A nie jest to jakaś czarna magia, może kilka godzin nauki raptem (
  • Odpowiedz
@kotoj: z drugiej strony to jest tak, ze jak mu zadziala to bedzie mial pewna satysfakcje xd a potem bedzie myslal jak poprawic kod, porobi refactor i bedzie wiedzial zeby robic dobrze od razu :>
  • Odpowiedz
@PanKara: pełna zgoda. Zauważ że napisałem :

Z mojego doświadczenia

( ͡° ͜ʖ ͡°)

Pierwszy "projekt" zrobiłem bez zastosowania page object pattern, od tamtej pory wiem, że tak nie można( ͡° ͜ʖ ͡°)
  • Odpowiedz
@kotoj: no ja pierwsze testy mialem w tasiemcach po 400 linijek xD potem copy paste na 12 wersji jezykowych a potem miesiac poprawiania xD

Ja tam jestem za tym zeby uczyl sie swoja sciezka bez narzucanych mu roznego rodzaju sztywnych ram bo sie chlopak zniecheci a tak malymi sukcesami niech brnie do przodu
  • Odpowiedz