Ожидание Selenium для ExpectedConditions.attributeToBe не работает должным образом - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь сделать wait.until для атрибута элемента следующим образом ...

public static void WaitForElementSize(WebElement element, WebDriver driver, int timeoutInSeconds)
    {
        if (timeoutInSeconds > 0)
        {
            System.out.print(element.getAttribute("style"));

            WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
            wait.until(ExpectedConditions.attributeToBe(element, "style", "top: 0px;"));
        }
    }

Я знаю из строки печати, что атрибут соответствует ожидаемому, то есть "top: 0px;"но когда я перебираю код в wait.until, элемент в пользовательском интерфейсе «щелкается» и меняется на закрытый (в этом случае стиль меняется на «top: 120px;»).Затем метод начинается с самого начала, а затем завершается сбоем, потому что теперь он неправильный.

Любая помощь по поводу того, почему метод перезапускается и изменяет значение, будет оценена.

Я также пытался ...

wait.until(e -> element.getAttribute("style") == "top: 0px;");

Но это не удается по другим причинамследовательно, пробуя альтернативу.

1 Ответ

0 голосов
/ 29 января 2019

атрибут будет выполнять метод равных строк, поэтому, если в стиле есть что-то еще, это не удастся, попробуйте с атрибутом, содержащим:

wait.until(ExpectedConditions.attributeContains(element, "style", "top: 0px;"));

это не будет работать:

wait.until(e -> element.getAttribute("style") == "top: 0px;"); 

вам нужно использовать:

element.getAttribute("style").equals("top: 0px;) 

для сравнения строк

...