Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Очень медленно стали работать тесты спустя два дня

webdriver
java
Теги: #<Tag:0x00007f7b65a212e0> #<Tag:0x00007f7b65a21178>

(Vladyslav Stuparenko) #1

Ребята вообщем такая история , покрыл тестами один сайт , было все замечательно , сделал так чтоб работало в два потока. Через день , я их запускаю опять , и получается так что пару тестов проходит и дальше ничего не происходит - ни ошибки ни действий. Или же шаг происходит но только спустя минут 5
Я запустил уже в один поток и через дебаг , и получается что тесты зависают на точке asserTrue.
Проблема в методе verifyElementIsPresent но странно что раньше ведь работало все нормально !

  • несколько раз проверял локаторы , все находит

      public class BasePage {
    

    public WebDriver driver;
    public WebDriverWait wait;
    public String PAGE_URL;
    public String PAGE_TITLE;
    public String eMail;

    public BasePage(WebDriver driver) throws Exception {
    this.driver = driver;
    wait = new WebDriverWait(driver, 10);

    }

    public void loadPage() {
    driver.get(getPageUrl());
    Assert.assertEquals(driver.getTitle(), getPageTitle());
    System.out.println(“Title is verified”);
    }

    public String getPageUrl() {
    return PAGE_URL;
    }

    public String getPageTitle() {
    return PAGE_TITLE;
    }

    public void clickOnElement(WebElement element) {
    wait.until(ExpectedConditions.visibilityOf(element));
    element.click();
    }

    public boolean verifyElementIsPresent(WebElement element) {
    try {
    wait.until(ExpectedConditions.visibilityOf(element));
    Assert.assertFalse(element.getTagName().isEmpty());
    Assert.assertTrue(element.isDisplayed());
    System.out.println(element + " is verified");
    return true;
    } catch (NoSuchElementException e) {
    return false;
    }
    }


(Sergey Korol) #2

Ну начнем с того, что ассерты должны быть частью тестов, а не абстрактной пейджи.
Во-вторых, какой смысл ассертить элемент на isDisplayed в данном контексте? Вы вызвали wait.until, и если уж вы дошли до ассерта, это означает, что элемент итак displayed. 2 ассерта (не софт) подряд - тоже весьма странное решение в данном контексте, не говоря об их включении в try блок. В общем, архитектурно ваш подход в корне неверен. Начните с рефаторинга.


(Vladyslav Stuparenko) #3

Я думаю может еще проблема в том что на сайт поставили поп-ап , который всплывает при первой загрузки страницы , но он как бы не мешает на сколько я понял
Не могли ли мне посоветовать ресурс , где бы я мог разобраться в грамотном составлении архитектуры ?


(Sergey Korol) #4

Недавно обсуждалось нечто подобное:


(Vladyslav Stuparenko) #5

Проблема не прошла , я подозреваю что дело в драйвере но что именно не могу понять
На хроме работает все достаточно быстро , ставлю фаерфокс и буквально на втором тесте безумно медленная скорость выполнения тестов.


(Vladyslav Stuparenko) #6

Да и еще :
на фоксе тоже работает , но при условии что я буду каждый тест отдельно запускать