private IEnumerable <TComponent> GetAndWaitWebDriverElements() { if (_shouldCacheFoundElements && _cachedElements == null) { _cachedElements = GetAndWaitNativeElements().ToList(); } if (_shouldCacheFoundElements && _cachedElements != null) { foreach (var element in _cachedElements) { yield return(element); } } else { foreach (var element in GetAndWaitNativeElements()) { yield return(element); } } IEnumerable <TComponent> GetAndWaitNativeElements() { foreach (var foundElement in _foundElements) { yield return(foundElement); } if (_by != null) { var nativeElements = WaitWebDriverElements(); int index = 0; foreach (var nativeElement in nativeElements) { var elementRepository = new ComponentRepository(); if (_parenTComponent != null) { var element = elementRepository.CreateComponentWithParent <TComponent>(_by, _parenTComponent, nativeElement, index++, _shouldCacheFoundElements); yield return(element); } else { var element = elementRepository.CreateComponentThatIsFound <TComponent>(_by, nativeElement, _shouldCacheFoundElements); yield return(element); } } } } }
private dynamic CastCell(ComponentRepository repo, ControlColumnData controlData, TableCell tableCell) { var element = repo.CreateComponentWithParent(controlData.By, tableCell.WrappedElement, controlData.ComponentType, false); // Resolve the appropriate Readonly Control Data Handler dynamic controlDataHandler = ControlDataHandlerResolver.ResolveReadonlyDataHandler(element.GetType()); if (controlDataHandler == null) { throw new Exception($"Cannot find proper IReadonlyControlDataHandler for type: {element.GetType().Name}. Make sure it is registered in the ServiceContainer"); } dynamic elementValue = controlDataHandler.GetData(element); return(elementValue); }
public IEnumerable <TComponent> GetCells <TComponent>() where TComponent : Component, new() { var listOfElements = new List <TComponent>(); var cells = GetCells().ToList(); for (int columnIndex = 0; columnIndex < cells.Count; columnIndex++) { var cell = cells[columnIndex]; TComponent element = new TComponent(); if (cell.CellControlComponentType == null) { listOfElements.Add(cell.As <TComponent>()); } else { var repo = new ComponentRepository(); element = repo.CreateComponentWithParent(cell.CellControlBy, cell.WrappedElement, typeof(TComponent), false); listOfElements.Add(element); } } return(listOfElements); }