Когда использовать явное ожидание или неявное ожидание в Selenium Webdriver?

Я использую:

driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS);

Но он по-прежнему постоянно терпит неудачу для элемента ниже

    driver.findElement(By.id("name")).clear();
    driver.findElement(By.id("name")).sendKeys("Create_title_01");

Я добавил код ожидания:

for (int second = 0;; second++) {
        if (second >= 120) fail("timeout");
        try { if (isElementPresent(By.id("name"))) break; } catch (Exception e) {}
        Thread.sleep(1000);
    }

Не должно ли неявное ожидание заботиться об ожидании, пока элемент не будет найден? Также было бы лучше, если бы я использовал явное ожидание вместо кода, который я добавил, который имеет Thread.sleep()?

46
задан lesmana 13 October 2019 в 10:48
поделиться