Статус видимости прядильщика становится истинным, но после того, как прядильщик закрывает, невидимость прядильщика не работает должным образом - PullRequest
0 голосов
/ 25 мая 2020

Я автоматизирую веб-приложение с помощью селена c#.

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

Я дал явное ожидание

wait.Until (SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible (LocatorSelect (locator, locatorvalue)));

Результат передается, и сценарий ждет, пока элемент станет видимым.

Но после проверки видимости счетчика я проверяю невидимость того же элемента.

Но элемент все равно ждет больше 30-40 секунд, даже если я дал 10 секунд. Затем примерно через 40 секунд он не выдает никаких ошибок и продолжает выполнять скрипт без каких-либо исключений.

public void Spinner_Check(string locator, string locatorvalue)
{
    int count = 1;

    WebDriverWait waits = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
    waits.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(LocatorSelect(locator, locatorvalue)));

    while (count > 0)
        {



        waits.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(By.XPath(locatorvalue)));
        IList<IWebElement> spinner_element = driver.FindElements(By.XPath(locatorvalue));
        int size = spinner_element.Count;
            if (size != 1)
            {
                count = 0;
                WriteLine("pass", "Spinner is dismissed for the page");
                break;
            }
        }
}

Итак, как я могу избежать такого длительного времени ожидания и выполнить скрипт вскоре после того, как счетчик будет удален из page.

Несколько наблюдений в скрипте:

  1. Когда я проверяю html, когда элемент виден, я мог видеть стиль атрибута отображения ' Block'.Но после того, как счетчик был удален из пользовательского интерфейса, я мог видеть, что xpath не показывает никаких элементов в области поиска: //iframe/parent::body//div[text()='Loading..'pting

  2. В целях отладки я установил ожидание появления элемента, видимого после того, как счетчик отклонен со страницы. Затем я мог видеть исключение тайм-аута и исключение NoSuchElement.

1 Ответ

0 голосов
/ 25 мая 2020

Вы должны учитывать несколько вещей:

  • Неясно, есть ли у вас отдельный тест для проверки видимости прядильщика но невидимости прядильщика - допустимый вариант использования. Таким образом, только InvisibilityOfElementLocated() может решить вашу задачу.
  • Spinner_Check метод выглядит как полностью накладные расходы, и вы можете заменить его всего одной строкой кода.

Решение

Чтобы проверить InvisibilityOfElementLocated , например, счетчик , вы можете использовать следующее решение:

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(LocatorSelect(locator, locatorvalue)));

Ссылка

Вы можете найти пару соответствующих обсуждений в:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...