WebDriver -ожидает элемент с помощью Java

Я ищу что-то похожее на waitForElementPresent, чтобы проверить, отображается ли элемент, прежде чем я нажму на него. Я думал, что это можно сделать с помощью implicitWait, поэтому я использовал следующее:

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

а затем нажмите

driver.findElement(By.id(prop.getProperty(vName))).click();

К сожалению, иногда он ожидает элемент, а иногда нет. Я искал некоторое время и нашел это решение:

for (int second = 0;; second++) {
            Thread.sleep(sleepTime);
            if (second >= 10)
                fail("timeout : " + vName);
            try {
                if (driver.findElement(By.id(prop.getProperty(vName)))
                       .isDisplayed())
                    break;
            } catch (Exception e) {
                writeToExcel("data.xls", e.toString(),
                        parameters.currentTestRow, 46);
            }
        }
        driver.findElement(By.id(prop.getProperty(vName))).click();

И все нормально, но до таймаута пришлось ждать 10 раз по 5, 50 секунд. Многовато. Поэтому я установил неявное ожидание на 1 секунду, и до сих пор все казалось прекрасным. Потому что теперь некоторые вещи ждут 10 секунд до истечения времени ожидания, а некоторые другие вещи истекают через 1 секунду.

Как вы покрываете ожидание присутствия/видимости элемента в вашем коде?Любой намек заметен.

73
задан Sanchit 9 October 2017 в 08:17
поделиться