2015-04-21 2 views
3

У меня есть команда wait на Java с помощью css-локатора и затем нажимает на нее.Explicit Wait PageFactory @Findby

new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("button.md-primary.md-raised.md-button.md-default-theme"))).click(); 

Теперь я обратился, что локатор в pagefactory объект, который lp.btnSignIn() что будет надлежащим образом оформить этот явный ждать, а затем нажмите кнопку? Могу ли я использовать ожидаемые условия?

Это мой PageFactory Код:

@FindBy(css="button.md-primary.md-raised.md-button.md-default-theme") 
WebElement btnSignIn; 

public WebElement btnSignIn() { 
    return btnSignIn; 
} 

ответ

1

решенный путем изменения в VisibilityOf:

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOf(lp.btnSignIn())).click(); 

Будьте осторожны, так как это проверяет, является ли элемент видимым, чего он может не быть, но он все еще находится в DOM.

0

Это просто зависит от того, что возвращается ваш метод lp.btnSignIn().

Цитирование с селеном документации here

public static ExpectedCondition<WebElement> presenceOfElementLocated(By locator) 

Ожидание для проверки того, что элемент присутствует на DOM страницы. Это не обязательно означает, что элемент виден.

Параметры:

локатор - используется для поиска элемента

Возвращает: в WebElement, когда он находится

Таким образом, вы могли бы использовать lp.btnSignIn() только если он возвращает css locater вместо WebElement

, следовательно, ваш btnSignIn() Митос бы что-то вроде этого:

public static Locater btnSignIn() { 
    return By.cssSelector("button.md-primary.md-raised.md-button.md-default-theme"); 
} 

И теперь ваш может использовать ожидаемые условия, как показано ниже:

new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(lp.btnSignIn())).click()`; 
+0

он возвращает css-локатор. Каков правильный синтаксис для вставки моего WebElement? – Elsid

+0

См. Обновленный ответ, надеюсь, что это поможет. – Anirudh

+0

Привет, я вижу, проблема в том, что мой объект - это WebElement, а не Locater. См. Мой отредактированный код. Спасибо – Elsid

Смежные вопросы