コード例 #1
0
        protected override IBaseElement SpecificAction(IBaseElement instance, FieldInfo field, object parent, Type type)
        {
            var element = (WebBaseElement)instance;

            if (parent != null && type == null)
            {
                return(element);
            }
            var frameBy = FrameAttribute.GetFrame(field);

            if (frameBy != null)
            {
                element.WebAvatar.FrameLocator = frameBy;
            }
            return(element);
        }
コード例 #2
0
        private IBaseElement CreateChildFromFieldStatic(object parent, Type parentClass, FieldInfo field, string driverName)
        {
            var instance = (WebBaseElement)field.GetValue(parent);

            if (instance == null)
            {
                instance = ActionWithException(
                    () => GetElementInstance(field, driverName),
                    ex => $"Can't create child for parent '{parentClass.Name}' with type '{field.FieldType.Name}'. Exception: {ex}");
            }
            else if (instance.Locator == null)
            {
                instance.WebAvatar.ByLocator = GetNewLocator(field);
            }
            instance.Frame = FrameAttribute.GetFrame(field);
            return(instance);
        }
コード例 #3
0
        protected override IBaseElement SpecificAction(IBaseElement instance, FieldInfo field, object parent, Type type)
        {
            var element = (WebBaseElement)instance;

            if (parent != null && type == null)
            {
                return(element);
            }
            var frameBy = FrameAttribute.GetFrame(field);

            if (frameBy != null)
            {
                element.WebAvatar.FrameLocator = frameBy;
            }
            By template;

            if (element.Parent is Form form && !element.HasLocator &&
                (template = form.LocatorTemplate) != null)
            {
                element.WebAvatar.ByLocator = template.FillByTemplate(field.Name);
            }
            return(element);
        }
コード例 #4
0
        private void CreateContext(FieldInfo viElement, ref VIElement instance)
        {
            instance.Context.Add(Context);

            var frameAttr = FrameAttribute.GetFrame(viElement);

            if (frameAttr != null)
            {
                instance.Context.Add(ContextType.Frame, frameAttr);
            }

            var locatorAttr = LocatorAttribute.GetLocator(viElement)
                              ?? LocatorAttribute.GetLocatorFomFindsBy(viElement);

            if (locatorAttr != null)
            {
                instance.Locator = locatorAttr;
            }
            if (_locator != null)
            {
                instance.Context.Add((this is Frame) ? ContextType.Frame : ContextType.Locator, _locator);
            }
        }
コード例 #5
0
        private IBaseElement CreateChildFromFieldStatic(object parent, Type parentClass, FieldInfo field, Type type,
                                                        string driverName)
        {
            var instance = (WebBaseElement)field.GetValue(parent);

            if (instance == null)
            {
                instance = ActionWithException(
                    () => GetElementInstance(field, driverName),
                    ex => $"Can't create child for parent '{parentClass.Name}' with type '{field.FieldType.Name}'. Exception: {ex}");
            }
            else if (instance.Locator == null)
            {
                instance.WebAvatar.ByLocator = GetNewLocator(field);
            }
            instance.WebAvatar.Context = parent is IBaseElement
                ? ((WebBaseElement)parent).WebAvatar.Context.Copy()
                : new Pairs <ContextType, By>();
            if (parent == null || type != null)
            {
                var frameBy = FrameAttribute.GetFrame(field);
                if (frameBy != null)
                {
                    instance.WebAvatar.Context.Add(ContextType.Frame, frameBy);
                }
            }
            if (parent is IBaseElement)
            {
                var parentLocator = ((WebBaseElement)parent).Locator;
                if (parentLocator != null)
                {
                    instance.WebAvatar.Context.Add(ContextType.Locator, parentLocator);
                }
            }
            return(instance);
        }