Wpis z mikrobloga

#selenium #testowanie #java #tester #github

Robię projekt selenium + cucumber na witrynie pracuj.pl i napotkałem pewien problem. Po zalogowaniu chcę rozwinąć listę opcji z profilu. Przy próbie wywołąnia click() na elemencie dostaję > selenium is not clickable at point xxxx another element obscures it
Przy użyciu wait na ten element to i tak od razu wywala, że jest on przykryty.
Tak wygląda element :


Zaczepiałem na :

@FindBy(xpath = "//*[@class='header__items_account_btn_arrow']"), @FindBy(xpath = "//*[@data-test='userAccount']"),
W obu przypadkach to samo.
To też nie działa

wait.until(ExpectedConditions.visibilityOf(profileDropList));
a.moveToElement(profileDropList).click().build().perform();

Git:

  • 12
@m0rdeczka: po pierwsze daj exception jaki ci wywala, tam powinno być napisane jaki element przykrywa ten ktory chcesz kliknąć.
Po drugie nie czekaj na widoczność elementu, tylko na klikalność (podmień visibilityOf na elementToBeClickable )

możesz tez dać sleepa na chwile żeby sprawdzić czy to w ogole kwestia tego oczekiwania. Jak po sleepie przejdzie to popraw waity. Jak sleep nic nie daje, to moze trzeba sprobowac z innym elementem albo kombinowac jakos
@kotoj: Jasne było napisane co przykrywa, ale to nie był żaden element widoczny.
Thread sleep załatwił sprawę, chciałem jednak go uniknąć. elementToBeClickable w ogóle nic nie zmienił, widocznie był clickabowalny ale wciąż przykryty... Więc waity nie miały wpływu
@kotoj: przykrywa go element <div id="onesignal-popover-container"
na który czekam po zalogowaniu i zamykam buttonem (jest to popup o powiadomieniach) nie widzę poza thread sleepem rozwiązania
@kotoj: troche namieszane chyba, ale rozumiem co masz na myśli, ciekawe, spróbuje też tego rozwiązania, gorzej jak na starcie jest niewidoczny ten element.
@jsujg: użyłem thread sleepa na sekundę
@kotoj: Ten sposób też działa, ale o dziwo bardzo długo trwa. Nawet jak wait ustawiony jest na 3 sekundy to i tak zajmuje to do 10, więc co do czasu to sleep jest szybszy
@m0rdeczka: @jsujg: co jest zagmatwane? Tam masz po prostu deklaracje nowego waita i xpatha. Jak wywalisz do zmiennych to będzie przejrzyście.
Nie wiem czemu działa dłużej ale bez uruchamiania kodu już mi się nie chce rozkminiac
@kotoj: No tak spojrzałem i mi składnia nie pasowała, masz rację jest dobrze napisane, tylko miałem już w kodzie deklaracje waita dlatego tak się zdziwiłem ;)
No tak jak @jsujg pisał, trwa tyle ile deklaracja waita, a w sumie to chyba zawsze 10, bo dałem na 3...