How to create custom FindByAttributeAttribute.
There are cases when custom FindByAttributeAttribute
has to be created to find a control by value of a specific attribute .
For example, there are pages containing following paragraph elements: <p data-name="Car description">
and <p data-name="Airplane description">
which we need to test.
To create a custom FindByAttribute attribute, create a new class inherited from the existing FindByAttributeAttribute
.
using Atata;
namespace SampleApp.UITests
{
public class FindByDataNameAttribute : FindByAttributeAttribute
{
private const string DataNameAttributeName = "data-name";
public FindByDataNameAttribute(TermCase termCase)
: base(DataNameAttributeName, termCase)
{
}
public FindByDataNameAttribute(params string[] values)
: base(DataNameAttributeName, values)
{
}
public FindByDataNameAttribute(TermMatch match, TermCase termCase)
: base(DataNameAttributeName, match, termCase)
{
}
public FindByDataNameAttribute(TermMatch match, params string[] values)
: base(DataNameAttributeName, match, values)
{
}
// Optionally override the default term case (default value = TermCase.Title).
protected override TermCase DefaultCase => TermCase.Sentence;
}
}
namespace SampleApp.UITests
{
using _ = SomePage;
public class SomePage : Page<_>
{
[FindByDataNameAttribute] // Finds by data-name="Car description".
public Text<_> CarDescription { get; private set; }
[FindByDataNameAttribute]
public Text<_> AirplaneDescription { get; private set; }
}
}