public ContainerContext GetContainerContext() { if (_containerContext == null || !_containerContext.IsActive) _containerContext = new ContainerContext(this); return _containerContext; }
public ContainerContext(ContainerBasePage container, ContainerContext parentContext = null) { _containingElement = container.Container; // the iframe _containerPage = container; _containerType = container.Type; _containerSwitchers = new Dictionary<ContainerType, Action<IWebDriver>>() { { ContainerType.Frame, driver => { driver.SwitchTo().Frame(_containingElement.Element); Log.Info(string.Format("Switched to Frame {0}", _containingElement.Identifier)); }}, { ContainerType.Alert, driver => driver.SwitchTo().Alert()}, { ContainerType.Window, driver => driver.SwitchTo().Window(_containerPage.NewestWindowHandle)}, { ContainerType.Element, driver => driver.SwitchTo().ActiveElement() } }; _containerRestorers = new Dictionary<ContainerType, Action<IWebDriver>>() { { ContainerType.Frame, driver => { if (HasParentContext(parentContext)) SwitchToParentContext(parentContext); else SwitchToDefaultContent(driver); } }, { ContainerType.Alert, driver => { driver.SwitchTo().DefaultContent(); Log.Info("Switched to DefaultContent"); }}, //? { ContainerType.Window, driver => driver.SwitchTo().Window(_containerPage.LastKnownWindowHandle)}, { ContainerType.Element, driver => driver.SwitchTo().ActiveElement() } //? }; Switch(); }
private void InitContainerContext() { if (_containerContext == null || !_containerContext.IsActive) _containerContext = new ContainerContext(this); }
private void SwitchToParentContext(ContainerContext parentContext) { parentContext.Switch(); Log.Info("Switched to parentContext"); }
private bool HasParentContext(ContainerContext parentContext) { return parentContext != null; }