Написали небольшое демо заказчику, что б показать приемущевства Page Object + Page Factory, у них било много threed.sleep-ов итд итп. Наш пример работает - тест проходит. Но когда ми ставим брейкпоинт перед каким то кликом на кнопку, то step into при дебаге кликает ету кнопку и клик не проходит, просто не осуществляеться, но при тесте все работает. Если добавить element.click() 2 раза, тоесть 2 клика подряд, то в дебаге работает тоже. Что за магия ? Кто то стикался ?
Пример где не работает при дебаге: на ReportsMenuItem.Click();
public class PortfolioTab : BasePage
{
[FindsBy(How = How.Id, Using = "NavPortfolioReports")]
private IWebElement ReportsMenuItem;
public PortfolioTab(IWebDriver driver) : base(driver)
{
PageFactory.InitElements(driver, this);
}
public ReportTab OpenReportTab()
{
ReportsMenuItem.Click();
return new ReportTab(Driver);
}
public override Func<IWebDriver, object> LoadedCondition()
{
return ExpectedConditions.ElementIsVisible(By.Id("NavPortfolioReports"));
}
}
public class ReportTab : BasePage
{
public ReportTab(IWebDriver driver) : base(driver)
{
PageFactory.InitElements(driver, this);
}
public AllocationHoldings AllocationHoldingsMenu { get { return new AllocationHoldings(Driver); } }
public override Func<IWebDriver, object> LoadedCondition()
{
return ExpectedConditions.ElementIsVisible(By.LinkText("Accounts by Asset Class"));
}
}
public abstract class BasePage
{
public IWebDriver Driver;
public BasePage(IWebDriver driver)
{
Driver = driver;
//WaitUntilAvailable(LoadedCondition());
}
public abstract Func<IWebDriver, object> LoadedCondition();
public string GetTitle()
{
return Driver.Title;
}
public void WaitUntilAvailable(Func<IWebDriver,object> condition)
{
IWait<IWebDriver> wait = new WebDriverWait(Driver,
TimeSpan.FromSeconds(30));
wait.Timeout = TimeSpan.FromSeconds(60);
wait.PollingInterval = TimeSpan.FromSeconds(1);
wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
wait.Until(condition);
}
}