Перейти к содержимому

Фотография

Использование Page Object в Explicit Waits


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 tvlad

tvlad

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Tarkovsky Vlad
  • Город:Lvov

Отправлено 25 января 2013 - 10:24

Имеется набор тестов (на C#). Все замечательно бегает на ФФ и Хром. На ИЕ9 тесты начинают непредсказуемо падать в разных местах, не находя объекты.

Вычитал про способ подмены стандартного метода FindElement():

public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(drv => drv.FindElement(by));
}
return driver.FindElement(by);
}

В принципе так работает, но в тестах всюду юзается Page Object, а в примере метод хочет явный локатор

Вот такая конструкция работает :

new WebDriverWait(_driver, TimeSpan.FromSeconds(5)).Until(ExpectedConditions.ElementExists(By.CssSelector("input[title='Unapprove']"))).Click();

А вот так - нет:

var dash = new DashboardPage(_driver);

new WebDriverWait(_driver, TimeSpan.FromSeconds(5)).Until(ExpectedConditions.ElementExists(dash.Unapprove)).Click();

Елемент Unapprove объявлен в классе DashboardPage:

[FindsBy(How = How.CssSelector, Using = "input[title='Unapprove']")]
public IWebElement Unapprove;

Если прописывать явные ожидания для ИЕ с конкретными локаторами, то вся концепция Page Object теряет смысл.

Можно-ли как-то заюзать элементы Page Object типа dash.Unapprove в ожиданиях Until(ExpectedConditions.ElementExist(), т.е. не By().


Заранее благодарен.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных