Skip to content

Commit

Permalink
WebElement to Element
Browse files Browse the repository at this point in the history
  • Loading branch information
nvborisenko committed Jan 15, 2024
1 parent 37ff061 commit eaa668f
Show file tree
Hide file tree
Showing 14 changed files with 49 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ namespace {{namespace}}
var elementLocator = SpaceOptions.Services.Get<global::Yapoml.Playwright.Services.Locator.IElementLocator>();
var elementsListHandler = new global::Yapoml.Playwright.Services.Locator.ElementsListHandler(Driver, _elementHandler, elementLocator, by, listMetadata, _elementHandler.ElementHandlerRepository.CreateNestedRepository(), EventSource);

var webElements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return webElements;
var elements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return elements;
{{ else }}
if (_elementHandler.ElementHandlerRepository.TryGet("{{component.name}}", out var cachedElementHandler))
{
Expand Down Expand Up @@ -85,8 +85,8 @@ namespace {{namespace}}
var metadata = new global::Yapoml.Playwright.Components.Metadata.ComponentMetadata() { Name = "{{singularize(component.original_name)}}" };
var listMetadata = new global::Yapoml.Playwright.Components.Metadata.ComponentsListMetadata() { Name = "{{component.original_name}}", ComponentMetadata = metadata };
var elementsListHandler = new global::Yapoml.Playwright.Services.Locator.ElementsListHandler(Driver, _elementHandler, elementLocator, by, listMetadata, _elementHandler.ElementHandlerRepository.CreateNestedRepository(), EventSource);
var webElements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return webElements;
var elements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return elements;
{{ else }}
var metadata = new global::Yapoml.Playwright.Components.Metadata.ComponentMetadata() { Name = "{{component.original_name}}" };
var elementHandler = new global::Yapoml.Playwright.Services.Locator.ElementHandler(Driver, _elementHandler, elementLocator, by, metadata, _elementHandler.ElementHandlerRepository.CreateNestedRepository(), EventSource);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ public partial class {{$1.singular_name}}Component : {{if $1.base_component}}glo
var elementLocator = SpaceOptions.Services.Get<global::Yapoml.Playwright.Services.Locator.IElementLocator>();
var elementsListHandler = new global::Yapoml.Playwright.Services.Locator.ElementsListHandler(Driver, _elementHandler, elementLocator, by, listMetadata, _elementHandler.ElementHandlerRepository.CreateNestedRepository(), EventSource);

var webElements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return webElements;
var elements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return elements;
{{ else }}
if (_elementHandler.ElementHandlerRepository.TryGet("{{component.name}}", out var cachedElementHandler))
{
Expand Down Expand Up @@ -83,8 +83,8 @@ public partial class {{$1.singular_name}}Component : {{if $1.base_component}}glo
var metadata = new global::Yapoml.Playwright.Components.Metadata.ComponentMetadata() { Name = "{{singularize(component.original_name)}}" };
var listMetadata = new global::Yapoml.Playwright.Components.Metadata.ComponentsListMetadata() { Name = "{{component.original_name}}", ComponentMetadata = metadata };
var elementsListHandler = new global::Yapoml.Playwright.Services.Locator.ElementsListHandler(Driver, _elementHandler, elementLocator, by, listMetadata, _elementHandler.ElementHandlerRepository.CreateNestedRepository(), EventSource);
var webElements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return webElements;
var elements = new {{component.singular_name}}ComponentList(Page, this, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return elements;
{{ else }}
var metadata = new global::Yapoml.Playwright.Components.Metadata.ComponentMetadata() { Name = "{{component.original_name}}" };
var elementHandler = new global::Yapoml.Playwright.Services.Locator.ElementHandler(Driver, _elementHandler, elementLocator, by, metadata, _elementHandler.ElementHandlerRepository.CreateNestedRepository(), EventSource);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ namespace {{namespace}}
var elementLocator = SpaceOptions.Services.Get<global::Yapoml.Playwright.Services.Locator.IElementLocator>();
var elementsListHandler = new global::Yapoml.Playwright.Services.Locator.ElementsListHandler(Driver, null, elementLocator, by, listMetadata, ElementHandlerRepository.CreateNestedRepository(), EventSource);

var webElements = new {{component.singular_name}}ComponentList(this, null, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return webElements;
var elements = new {{component.singular_name}}ComponentList(this, null, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return elements;
{{- else -}}
if (ElementHandlerRepository.TryGet("{{component.name}}", out var cachedElementHandler))
{
Expand Down Expand Up @@ -105,8 +105,8 @@ namespace {{namespace}}
var metadata = new global::Yapoml.Playwright.Components.Metadata.ComponentMetadata() { Name = "{{singularize(component.original_name)}}" };
var listMetadata = new global::Yapoml.Playwright.Components.Metadata.ComponentsListMetadata() { Name = "{{component.original_name}}", ComponentMetadata = metadata };
var elementsListHandler = new global::Yapoml.Playwright.Services.Locator.ElementsListHandler(Driver, null, elementLocator, by, listMetadata, ElementHandlerRepository.CreateNestedRepository(), EventSource);
var webElements = new {{component.singular_name}}ComponentList(this, null, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return webElements;
var elements = new {{component.singular_name}}ComponentList(this, null, Driver, elementsListHandler, listMetadata, EventSource, SpaceOptions);
return elements;
{{ else }}
var metadata = new global::Yapoml.Playwright.Components.Metadata.ComponentMetadata() { Name = "{{component.original_name}}" };
var elementHandler = new global::Yapoml.Playwright.Services.Locator.ElementHandler(Driver, null, elementLocator, by, metadata, ElementHandlerRepository.CreateNestedRepository(), EventSource);
Expand Down
3 changes: 0 additions & 3 deletions src/Yapoml.Playwright/Components/BaseComponent.cs
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
using System;
using Yapoml.Framework.Options;
using System.Drawing;
using Yapoml.Framework.Logging;
using Yapoml.Playwright.Events;
using Yapoml.Playwright.Services.Locator;
using Yapoml.Playwright.Components.Metadata;
using Yapoml.Playwright.Options;
using Yapoml.Playwright.Components;
using Microsoft.Playwright;

namespace Yapoml.Playwright.Components
{
/// <inheritdoc cref="IWebElement"/>
public abstract partial class BaseComponent<TComponent, TConditions, TCondition> : BaseComponent
where TComponent : BaseComponent<TComponent, TConditions, TCondition>
where TConditions : BaseComponentConditions<TConditions>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using Yapoml.Playwright.Components.Metadata;

namespace Yapoml.Playwright.Events.Args.WebElement
namespace Yapoml.Playwright.Events.Args.Element
{
public class FindingElementEventArgs : EventArgs
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using Yapoml.Playwright.Components.Metadata;

namespace Yapoml.Playwright.Events.Args.WebElement
namespace Yapoml.Playwright.Events.Args.Element
{
public class FindingElementsEventArgs : EventArgs
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
using System;
using Yapoml.Playwright.Components.Metadata;

namespace Yapoml.Playwright.Events.Args.WebElement
namespace Yapoml.Playwright.Events.Args.Element
{
public class FoundElementEventArgs : EventArgs
{
public FoundElementEventArgs(string by, IPage driver, ILocator webElement, ComponentMetadata componentMetadata)
public FoundElementEventArgs(string by, IPage driver, ILocator element, ComponentMetadata componentMetadata)
{
By = by;
Driver = driver;
WebElement = webElement;
Element = element;
ComponentMetadata = componentMetadata;
}

public string By { get; }
public IPage Driver { get; }
public ILocator WebElement { get; }
public ILocator Element { get; }
public ComponentMetadata ComponentMetadata { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using System.Collections.Generic;
using Yapoml.Playwright.Components.Metadata;

namespace Yapoml.Playwright.Events.Args.WebElement
namespace Yapoml.Playwright.Events.Args.Element
{
public class FoundElementsEventArgs : EventArgs
{
Expand Down
6 changes: 3 additions & 3 deletions src/Yapoml.Playwright/Events/ComponentEventSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System;
using System.Collections.Generic;
using Yapoml.Playwright.Components.Metadata;
using Yapoml.Playwright.Events.Args.WebElement;
using Yapoml.Playwright.Events.Args.Element;

namespace Yapoml.Playwright.Events
{
Expand All @@ -23,9 +23,9 @@ public void RaiseOnFindingComponents(string by, ComponentsListMetadata component
OnFindingComponents?.Invoke(this, new FindingElementsEventArgs(by, componentsListMetadata));
}

public void RaiseOnFoundComponent(string by, IPage driver, ILocator webElement, ComponentMetadata componentMetadata)
public void RaiseOnFoundComponent(string by, IPage driver, ILocator element, ComponentMetadata componentMetadata)
{
OnFoundComponent?.Invoke(this, new FoundElementEventArgs(by, driver, webElement, componentMetadata));
OnFoundComponent?.Invoke(this, new FoundElementEventArgs(by, driver, element, componentMetadata));
}

public void RaiseOnFoundComponents(string by, IPage driver, IReadOnlyList<ILocator> elements, ComponentsListMetadata componentsListMetadata)
Expand Down
4 changes: 2 additions & 2 deletions src/Yapoml.Playwright/Events/IComponentEventSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System;
using System.Collections.Generic;
using Yapoml.Playwright.Components.Metadata;
using Yapoml.Playwright.Events.Args.WebElement;
using Yapoml.Playwright.Events.Args.Element;

namespace Yapoml.Playwright.Events
{
Expand All @@ -22,6 +22,6 @@ public interface IComponentEventSource

void RaiseOnFoundComponents(string by, IPage driver, IReadOnlyList<ILocator> elements, ComponentsListMetadata componentsListMetadata);

void RaiseOnFoundComponent(string by, IPage driver, ILocator webElement, ComponentMetadata componentMetadata);
void RaiseOnFoundComponent(string by, IPage driver, ILocator element, ComponentMetadata componentMetadata);
}
}
2 changes: 1 addition & 1 deletion src/Yapoml.Playwright/Events/LogEventsProducer.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Yapoml.Framework.Logging;
using Yapoml.Framework.Options;
using Yapoml.Playwright.Events.Args.WebElement;
using Yapoml.Playwright.Events.Args.Element;
using Yapoml.Playwright.Events.Args.Page;

namespace Yapoml.Playwright.Events
Expand Down
12 changes: 6 additions & 6 deletions src/Yapoml.Playwright/Extensions/Lighter/LighterExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//using System.Drawing;
//using Yapoml.Framework.Options;
//using Yapoml.Playwright.Events;
//using Yapoml.Playwright.Events.Args.WebElement;
//using Yapoml.Playwright.Events.Args.Element;

//namespace Yapoml.Playwright
//{
Expand Down Expand Up @@ -35,7 +35,7 @@

// private static void ComponentEventSource_OnFoundComponent(object sender, FoundElementEventArgs e)
// {
// HightlightElement(e.Driver, e.WebElement);
// HightlightElement(e.Driver, e.Element);
// }

// private static void ComponentEventSource_OnFoundComponents(object sender, FoundElementsEventArgs e)
Expand All @@ -46,21 +46,21 @@
// }
// }

// private static void HightlightElement(IWebDriver driver, IWebElement webElement)
// private static void HightlightElement(IWebDriver driver, IElement element)
// {
// var jsExecutor = driver as IJavaScriptExecutor;

// if (jsExecutor != null)
// {
// try
// {
// var backgroundColor = webElement.GetCssValue("background-color");
// var backgroundColor = element.GetCssValue("background-color");

// jsExecutor.ExecuteScript($"arguments[0].setAttribute('style', 'background: rgba({_color.R}, {_color.G}, {_color.B}, {(float)_color.A / 100});');", webElement);
// jsExecutor.ExecuteScript($"arguments[0].setAttribute('style', 'background: rgba({_color.R}, {_color.G}, {_color.B}, {(float)_color.A / 100});');", element);

// System.Threading.Thread.Sleep(_delay);

// jsExecutor.ExecuteScript($"arguments[0].setAttribute('style', 'background: {backgroundColor}; transition: all {_fadeOutSpeed}ms ease-in-out;');", webElement);
// jsExecutor.ExecuteScript($"arguments[0].setAttribute('style', 'background: {backgroundColor}; transition: all {_fadeOutSpeed}ms ease-in-out;');", element);


// }
Expand Down
22 changes: 11 additions & 11 deletions src/Yapoml.Playwright/Services/Locator/ElementHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ public ElementHandler(IPage driver, IElementHandler parentElementHandler, IEleme
_eventSource = eventSource;
}

public ElementHandler(IPage driver, IElementHandler parentElementHandler, IElementLocator elementLocator, string by, ILocator webElement, ComponentMetadata componentMetadata, IElementHandlerRepository elementHandlerRepository, IEventSource eventSource)
public ElementHandler(IPage driver, IElementHandler parentElementHandler, IElementLocator elementLocator, string by, ILocator element, ComponentMetadata componentMetadata, IElementHandlerRepository elementHandlerRepository, IEventSource eventSource)
: this(driver, parentElementHandler, elementLocator, by, componentMetadata, elementHandlerRepository, eventSource)
{
_webElement = webElement;
_element = element;
}

private ILocator _webElement;
private ILocator _element;

public string By { get; }

Expand All @@ -45,7 +45,7 @@ public ILocator Locate()

public ILocator Locate(TimeSpan timeout, TimeSpan pollingInterval)
{
if (_webElement == null)
if (_element == null)
{
if (_parentElementHandler != null)
{
Expand All @@ -59,14 +59,14 @@ public ILocator Locate(TimeSpan timeout, TimeSpan pollingInterval)

do
{
_webElement = _elementLocator.FindElement(parentElement, By);
_element = _elementLocator.FindElement(parentElement, By);

break;

}
while (stopwatch.Elapsed <= timeout);

if (_webElement is null)
if (_element is null)
{
throw lastException;
}
Expand All @@ -81,27 +81,27 @@ public ILocator Locate(TimeSpan timeout, TimeSpan pollingInterval)

do
{
_webElement = _driver.Locator(By);
_element = _driver.Locator(By);

break;
}
while (stopwatch.Elapsed <= timeout);

if (_webElement is null)
if (_element is null)
{
throw lastException;
}
}

_eventSource.ComponentEventSource.RaiseOnFoundComponent(By, _driver, _webElement, ComponentMetadata);
_eventSource.ComponentEventSource.RaiseOnFoundComponent(By, _driver, _element, ComponentMetadata);
}

return _webElement;
return _element;
}

public void Invalidate()
{
_webElement = null;
_element = null;

foreach (var elementHandler in ElementHandlerRepository.ElementHandlers)
{
Expand Down
14 changes: 7 additions & 7 deletions src/Yapoml.Playwright/Services/Locator/ElementsListHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,39 +31,39 @@ public ElementsListHandler(IPage driver, IElementHandler parentElementHandler, I

public void Invalidate()
{
_webElements = null;
_elements = null;

foreach (var elementHandler in ElementHandlerRepository.ElementHandlers)
{
elementHandler.Invalidate();
}
}

IReadOnlyList<ILocator> _webElements;
IReadOnlyList<ILocator> _elements;

public IReadOnlyList<ILocator> LocateMany()
{
if (_webElements == null)
if (_elements == null)
{
if (_parentElementHandler != null)
{
var parentElement = _parentElementHandler.Locate();

_eventSource.ComponentEventSource.RaiseOnFindingComponents(By, ComponentsListMetadata);

_webElements = _elementLocator.FindElements(parentElement, By);
_elements = _elementLocator.FindElements(parentElement, By);
}
else
{
_eventSource.ComponentEventSource.RaiseOnFindingComponents(By, ComponentsListMetadata);

_webElements = _driver.Locator(By).AllAsync().GetAwaiter().GetResult();
_elements = _driver.Locator(By).AllAsync().GetAwaiter().GetResult();
}

_eventSource.ComponentEventSource.RaiseOnFoundComponents(By, _driver, _webElements, ComponentsListMetadata);
_eventSource.ComponentEventSource.RaiseOnFoundComponents(By, _driver, _elements, ComponentsListMetadata);
}

return _webElements;
return _elements;
}
}
}

0 comments on commit eaa668f

Please sign in to comment.