21 октября 2014 г.

Маленький, но очень полезный трюк. Webdriver IsElementPresent

Периодически нам приходится проверять, присутствует ли элемент на странице.
Я пока не вижу более адекватного варианта, чем найти все элементы с нужным локатором  и проверить, что размер получившегося списка не равен 0.

bool exists = driver.FindElements(locator).Count != 0;

Это работает.
Но долго.
Иногда страшно долго (если мы ищем по xpath, и  элемента на странице всё таки нет).


Можно сказать драйверу чтобы не особо напрягался поисками элемента.
Реализация в С# будет так:

public static bool IsElementPresent(By locator)
        {
            var driver = GetDriver();
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromMilliseconds(0));
            bool exists = driver.FindElements(locator).Count != 0;
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3));
            return exists;
        }